• Python


    面向对象编程

    • Object Oriented Programming,简称 OOP,是一种程序设计思想
    • OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法

    Python里面有一句话:万物皆是对象

    在编程领域中,通常把现实世界中的实体称为对象,例如:

    • 美国总统特朗普
    • 中国明星成龙
    • 上海中心大厦
    • 北京中信大厦

    对象指的是一个具体的实体,不用于指代一个抽象的群体

    • 小菠萝是一个具体的人,所以可以说小菠萝是一个对象
    • 它是一个中国人,但中国人是一个抽象的概念,指的是一群人
    • 所以不能说中国人是一个对象

    类似的,上海中心大厦、北京中信大厦这些具体的大厦可以被称为对象,但是不能说大厦是一个对象

    对象的属性和行为

    现实世界中的实体有属性和行为,如下列举了特朗普和小菠萝的属性和行为

    对象属性行为
    特朗普 姓名、年龄 自我介绍
    小菠萝 姓名、年龄 自我介绍

    行为又被称为方法,它是对属性的操作

    包括读取操作和修改操作,例如,在特朗普的自我介绍行为中,会读取他的属性:姓名和年龄

    Python 对象

    对象栗子

    # 字符串 
    'Hello'
    
    # 列表 
    ['www', 'poloyy', 'com']
    
    # 元组 
    ('www', 'poloyy', 'com')
    
    # 字典 
    {'name': 'tom', 'age': 123}

    对象的属性

    >>> string = 'Hello'
    >>> print(string.__doc__)
    str(object='') -> str
    str(bytes_or_buffer[, encoding[, errors]]) -> str
    Create a new string object from the given object. 
    
    >>> list = ['a', 'b', 'c']
    >>> print(list.__doc__)
    list() -> new empty list
    list(iterable) -> new list initialized from iterable's items

    __doc__ 是属性,字符串、列表都有这个属性

    对象的行为

    >>> string = 'Hello'
    >>> string.upper()
    'HELLO'
    >>> list = ['a', 'b', 'c']
    >>> list.append('d')
    >>> list
    ['a', 'b', 'c', 'd']
    • upper() 是字符串的方法,也叫行为
    • append() 是列表的方法

    什么是类

    类的定义

    • 在现实世界中,具体的实体被称为对象
    • 观察这些对象的属性和行为,发现可还是用相同的特征去描述一类对象
    对象属性和行为
    美国总统特朗普 姓名、年龄、工作
    中国明星成龙 姓名、年龄、工作
    上海中心大厦 高度、业主、维护
    北京中信大厦 高度、业主、维护

    现实生活中

    • 可以使用【姓名、年龄、工作】 等特征去描述特朗普和成龙这一类对象,因为都是人
    • 使用【高度、业主、维护】等特征去描述上海中心大厦、北京中信大厦这一类对象,因为都是大厦

    编程世界中

    • 类是对一组具有相同属性和行为的对象的抽象
    • 【人】是一个抽象的概念,它是一个类或类别,描述了具有【姓名、年龄、工作】等特征的一组对象
    • 【大厦】是一个抽象的概念,它是一个类或类别,描述了具有【高度、业主、维护】等特征的一组对象

    类和对象的区别

    • 对象是一个具体的实体,比如【小菠萝】是一个对象,是一个具体的人
    • 类是一组具有相同特征的对象,【小菠萝】【成龙】【特朗普】的都是一个具体的人,而人是一个类

    类和对象的关系

    • 对象属于某个类,对象也可以不属于某个类
    • 【小菠萝】是一个人,属于人类,但不是一个大厦,不属于大厦类
  • 相关阅读:
    [BZOJ 3270] 博物馆
    [BZOJ 3551] Peaks加强版
    [HNOI 2009] 梦幻布丁
    [NOI 2018] 归程
    [YNOI 2016] 掉进兔子洞
    [SCOI 2014] 方伯伯的玉米田
    Codeforces Round #545 (Div. 2)
    初涉Min-Max容斥【在更】
    【费用流】bzoj1834: [ZJOI2010]network 网络扩容
    【最大权闭合子图】bzoj4873: [Shoi2017]寿司餐厅
  • 原文地址:https://www.cnblogs.com/poloyy/p/15178423.html
Copyright © 2020-2023  润新知