#廖雪峰教程[面向对象高级编程]_定制类[2] #实现一个定制类,便于链式调用 class chain(object): def __init__(self,path=''): self.path=path def __str__(self):#调用print()打印path return self.path def __call__(self, path):#当对实例进行调用a("xxx")时将path连接并返回一个新的实例 return chain('%s/%s' % (self.path,path)) def __getattr__(self, item):#当写下a.xxx时会将xxx添加到path中,并返回一个新的类 return chain('%s/%s' % (self.path,item)) __repr__ = __str__
在控制台输入以下代码:
>>>a=chain() >>>a.users('michael').repos('ganma')
输出:
/users/michael/repos/ganma
原理: 其实原理很简单,无论是a.users还是a('users'),都是将字符与a本身的path连接,然后返回一个新的类。 然后因为我们写了__repr__ = __str__,所以最后的一个类会自动打印。
__repr__ = __str__
Sign in to make a reply
MRZ轲信御马上
在控制台输入以下代码:
输出:
原理: 其实原理很简单,无论是a.users还是a('users'),都是将字符与a本身的path连接,然后返回一个新的类。 然后因为我们写了
__repr__ = __str__
,所以最后的一个类会自动打印。