python学习笔记-2-面向对象

1. class X(Y) 

X-类名

Y-继承类名

初始化:def__init__(self, attribute1, attribute2):

__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。



2.解释器内部会将**kw拆分成对应的dict

setattr()方法接受3个参数:setattr(对象,属性,属性的值)

setattr(self,k,v)相当于self.k = v


3.如果一个属性由双下划线开头(__),该属性就无法被外部访问。

但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。

以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。


4.绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。


5.当实例属性和类属性重名时,实例属性优先级高


6.

>>> getattr(s, 'name')# 获取name属性'Bob'

>>> setattr(s, 'name', 'Adam')# 设置新的name属性

>>> s.name  'Adam'

>>> getattr(s, 'age')# 获取age属性,但是属性不存在,报错:Traceback (most recent call last):  File "", line 1, in AttributeError: 'Student' object has no attribute 'age'

>>> getattr(s, 'age', 20)# 获取age属性,如果属性不存在,就返回默认值20:


7.  iteritems()用于字典kw的遍历

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容