码迷,mamicode.com
首页 > 编程语言 > 详细

Python的高级特性5:谈谈python的动态属性

时间:2015-07-20 01:21:14      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。

看下面一种常见的get/set操作

In [174]: class Student(object):
   .....:     pass
   .....: 

In [175]: s = Student()

In [176]: s.name = alex

In [177]: print(s.name)
alex

它的动态属性是怎么来的呢?其实,它真正的过程是这样的

In [178]: class Student(object):
   .....:     pass
   .....: 

In [179]: s = Student()

In [180]: s.__setattr__("name","alex")

In [181]: s.__getattribute__("name")
Out[181]: alex

由此可见,__setattr__与__getattribute__方法才是实例获得动态属性的真正原因。

Python的高级特性5:谈谈python的动态属性

标签:

原文地址:http://www.cnblogs.com/alexkn/p/4660248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!