__getattr__和__call__用法

class Student(object):
  def __init__(self,name = ''):
    self._name = name
  def __getattr__(self,attr):
    return Student(attr)
  def __call__(self,para):
    return Student('%s/%s'%(self._name,para))
  def __str__(self):
    return self._name
  __repr__ = __str__

print(Student().user('aleck'))

  在实例的方法调用中没有发现有user这个方法,通过__getattr__()来返回一个Student(user('aleck')),但是这里的user是一个函数,所以在调用的时候直接执行

__call__定义的方法,不知道是不是这样的,请指正。

    

posted @ 2016-01-19 09:08  Aleck_小茂  阅读(149)  评论(0)    收藏  举报