Python的高级特性5:谈谈python的动态属性
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。看下面一种常见的get/set操作
In : class Student(object):
.....: pass
.....:
In : s = Student()
In : s.name = 'alex'
In : print(s.name)
alex
它的动态属性是怎么来的呢?其实,它真正的过程是这样的
In : class Student(object):
.....: pass
.....:
In : s = Student()
In : s.__setattr__("name","alex")
In : s.__getattribute__("name")
Out: 'alex'
由此可见,__setattr__与__getattribute__方法才是实例获得动态属性的真正原因。
页:
[1]