Python的高級特性5:談談python的動態屬性


正常情況下,當我們定義了一個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__方法才是實例獲得動態屬性的真正原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM