son30 发表于 2015-11-30 11:52:05

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]
查看完整版本: Python的高级特性5:谈谈python的动态属性