wyqwilliam 2020-01-23
万物皆对象
对象是具体的事物
Python中一切东西都是对象,Python是一门特别彻底的面向对象编程语言(OOP)
其他编程语言很多还分基本类型和对象类型,而在python中,只有对象类型
两者都是解决问题的思路、思想,面向对象本身是面向过程的封装
类是某一类具体对象特征的抽象
根据抽象的类,生产具体的对象
名称、属性、方法
注意:
对象 -- 抽象 -- 类
类 -- 实例化 -- 对象
经典类的定义:
class 类名: ......
obj = 类名()
创建对象时的底层运作:
xxx.__name__
xxx.__class__
概念:
访问权限:
判断依据:
对象.属性 = 值
__init__()
增加了一个属性之后,内存中先开辟一段空间存储属性值,然后在对象的空间里存储这个值对象的引用变量
直接通过对象.属性
访问
python提供了一个 __dict__
属性,是一个字典,里面包含了现在这个对象里的所有属性
修改属性值:对象.属性 = 值
del 对象.属性
增加类属性:
类名.属性 = 值
属性 = 值
查看类属性:
类名.属性
对象.类属性
__class__
找到对象对应的类,找这个类的属性修改类属性:
类名.属性 = 值
对象.__class__.属性 = 值
对象.属性 = xxx
是对象的增加属性和修改属性的语法查看所有类属性:类名.__dict__
删除类属性:
del 类名.属性
类属性的内存存储问题:
__dict__
进行访问类.__dict__
是一个只读属性__dict__
这个字典中,有些内置对象没有这个属性__dict__
属性__dict__
是只读的,默认无法修改,可以通过setattr的方法修改类属性被各个对象共享
在类中写上:__slots__ = [......]
后续通过类创建的对象,都只能添加指定的属性
描述一个目标的行为动作
和函数非常类似:
方法的划分:
注意:
定义实例方法:
class A: def xxx(self): pass
定义类方法:
class A: @classmethod def xxx(cls): pass
定义静态方法:
class A: @taticmethod def xxx(): pass