標籤:getattr href get __iter__ 元素 官方 span org print
__str__() __call__() __repr__()方法
>>> class Student(object): def __init__(self, name): self.name = name def __call__(self): print(‘My name is %s.‘ % self.name) def __str__(self):return ‘I am a print call for name:%s !‘%self.name def __repr__(self):return ‘I am a print var value for name:%s !‘%self.name>>> s = Student(‘lucy‘)>>> s //call __repr__()I am a print var value for name:lucy !>>> s() // call __call__()My name is lucy.>>> print s //call __str__()I am a print call for name:lucy !
__str__是調用print 列印,
__repr__是直接寫變數時列印的
__iter__
()方法
如果一個類想被用於for ... in迴圈,類似list或tuple那樣,就必須實現一個__iter__()方法
__getitem__()方法
要表現得像list那樣按照下標取出元素,需要實現__getitem__()方法
__getattr__()方法
那就是寫一個__getattr__()方法,動態返回一個屬性
class Student(object): def __init__(self): self.name = ‘Michael‘ def __getattr__(self, attr): if attr==‘score‘: return 99
raise AttributeError(‘\‘Student\‘ object has no attribute \‘%s\‘‘ % attr) //調用不存在的屬性是,拋出
>>> s = Student()>>> s.name‘Michael‘>>> s.score99
本節介紹的是最常用的幾個定製方法,還有很多可定製的方法,請參考Python的官方文檔。
http://docs.python.org/2/reference/datamodel.html#special-method-names
python一些定製方法(函數)