python中一切皆为对象
例如,python中的基础数据类型就是类,str是类,'abc'就是str的对象
1.类
定义:类是具有相同属性和方法的一类事物
类名的首字母一般大写
1.1类属性
在类中,方法外定义的属性就叫做类属性,类属性属于类,由所有类的对象共享
在使用类属性时,一般都通过类名.类属性名来使用.
1.2方法
- 函数在类中定义,由类的对象调用时就叫做方法
- 方法的第一个参数都为self,代表调用对象的内存地址(这个参数可以不叫self,但约定俗成,都叫self)
- 但是在用对象调用类中方法时,并不用填这个参数,会将对象的地址自动作为第一个参数传入
- 只有通过类名调用类中方法时,需要将对象作为第一个参数传入
1.3类的实例化
由类创建对象的过程叫做实例化.通过类名()来进行实例化
类的实例化过程:
- 创建一块属于对象的内存空间
- 把这块内存空间的内存地址和参数传给__init__(初始化方法)
- 执行__init__方法
- 返回对象的内存地址,赋给变量
如果类中没有__init__方法,会自动调用object类中的__init__方法
1.4__dict__
通过类名.__dict__可以获得类中的所有属性和方法组成的字典,但是不能通过修改字典来修改类中的属性和方法
2.对象
定义:对象就是类的实例化
对象也叫实例,两者完全相同,是一类事物
2.1类指针
在对象的内存空间中,会有一个类指针指向类,如果对象中没有指定的属性/方法,就会到类中寻找,调用
类指针是单向的,类并不能使用对象中的对象属性
2.2对象属性
对象属性属于对象,一般在类中表示为self.属性名
2.3__dict__
对象名.__dict__可以获得对象所有对象属性组成的字典,与类不同,可以通过修改__dict__来修改对象的属性
2.4组合
一个对象是另一个对象的属性,这种现象就叫做组合.
class Cls1(object):pass
class Cls2(object):pass
c1 = Cls1()
c2 = Cls2()
c1.obj = c2
这种现象就叫做组合