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

你可能感兴趣的:(python学习笔记-2-面向对象)