Python类和对象一(十)
封装:
在创建对象之前,通过类将相关的属性和方法打包到一起,然后通过类来生成响应的对象
定义类:

创建对象:

方法里面有个参数self:new的对象
当我们调用类里面方法的时候,py是怎么知道是哪一个对象在调用呢,就是通过self传递的信息

类中的每一个方法,默认的第一个参数都是self
继承:


判断对象是否属于某个类:

检测某个类是否为某个类的子类:

多重继承:
对象访问属性和方法,会优先去第一个类中找,第一个找不到了才去第二个类中找

组合:


self就是实例对象本身,self起到的作用就是绑定,实例对象跟类的方法进行绑定,类的实例对象可以有很多,实例对象共享类里面的方法

self绑定:
当调用实例c.get_self的时候实际是调用类c的get_self方法,并将实例对象作为参数传递进去,进而实现绑定
在实例中类的方法是共享的,属性是自己的

对象内省:
py是支持内省的语言,对象在运行的时候拥有自我观察能力,我们想要知道对象有那些属性,可以通过_ _dic_ _ 内省

通过类里面的方法设置类的属性:


在 class C 中定义的 x = 100 属于类属性。类属性是定义在类中,且不属于任何一个具体实例特有的属性,它被类的所有实例共享。当你创建实例 c = C() 后,c 可以访问到类属性 x ,这是因为当实例去访问一个属性时,如果自身不存在该属性,就会向上到类中查找
实例属性是在实例化对象后,通过特定方式为每个实例单独创建的属性。在 set_x 方法中,x = v 这种写法只是在方法内部创建了一个局部变量 x ,并没有将其与实例 c 关联起来成为实例属性。若要为实例 c 创建名为 x 的实例属性,在 set_x 方法中应写成 self.x = v ,这里的 self 代表实例本身,这样赋值后,实例 c 就有了自己独立的实例属性 x 。
当修改C类属性x值后,对象c的值也变了,因为通过类生成的实力对象,都共享的这个属性,一旦修改它,由他创建对象也改变了
定义最小的类:

可以把它当做字典类使用:
字典:

最小类

一般建议通过类 生成的实力来模拟字典:

