python一些定制方法(函数)

__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__()方法
for ... in__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.score 99

本节介绍的是最经常使用的几个定制方法,还有不少可定制的方法,请参考Python的官方文档。http://docs.python.org/2/reference/datamodel.html#special-method-names
相关文章
相关标签/搜索