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的遍历