二十五、面向对象5:python动态添加属性及方法、__slots__的作用

一、python是动态语言

动态语言目前非常具有活力。例如JavaScript便是一个动态语言,除此之外如 PHP 、 Ruby 、 Python 等也都属于动态语言,而 C 、 C++ 等语言则不属于动态语言。

原先定义a的时候是一个数字类型的,现在让a保存的是一个函数,这就是动态语言的特点。

二、dir(对象)

查看该对象身上所有的属性和方法(包括所有自带的)

三、运行的过程中给对象(实例)绑定(添加)属性

四、运行的过程中给对象(实例)删除属性

#删除有两种方法:
del p.addr                  #1、用del删除添加的addr属性,  del 对象名.属性名

delattr(p,"addr")     #2、delattr(实例对象名,"属性名")

五、运行的过程中给类绑定(添加)属性

六、运行的过程中给对象绑定(添加)方法

     1、 types.MethodType的作用:给对象添加方法

     2、使用时记得导types包,后面括号里,给对象添加个方法

七、运行的过程中给类绑定(添加)方法

八、__slots__的作用

定义一个特殊的__slots__变量,来限制该class实例能添加的属性:

1、()里的可添加属性,且只能在外添加这两个属性

2、在类外添加属性,对  类.属性名  格式限制不起作用(对类添加的属性不起作用)

3、对类里面本身就含有的属性和方法不起限制作用,只对类外定义添加的属性、方法起作用。

4、__slots__定义的属性仅对当前类实例的对象起作用,对继承的子类实例出来的对象是不起作用的。

     在子类中可以调用父类限制的方法。

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/81384196