解释
__getattr__:当调用不存在的属性时访问这个方法
__str__:对象打印出来的字符串(返回用户看到的)
__repr__:对象打印出来的字符串(返回开发者看到的)
__call__:如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符
实例:
class MyClass(object):
def __call__(self, num):
print("in __call__: %s", num)
def __init__(self, num):
self.num = num
def __str__(self):
print("in __str__")
return "test"
def __repr__(self):
print("in __repr__")
return "test2"
a = MyClass(4)
print a
print a(75)
a(80)
运行结果
__init__:
__getitem__:对象像list那样按照下标取出元素(注意:如若需要使用切片等方法需要自己实现)
实例
import sys, os
class UrlChain(object):
def __init__(self, path=''):
print("in __init__")
self._path = path
def __getattr__(self, guan):
print("in __getattr__")
print("in __getattr__: %s" % guan)
return UrlChain('%s/%s' % (self._path, guan))
def __str__(self):
print("in __str__")
return self._path
def __call__(self, index):
print("in __call__")
return UrlChain('%s/%s' % (self._path, index))
class CephManager(object):
base_url = UrlChain('v1')
def func1(self):
print self.base_url.clusters('JeffreyGuan')
cm = CephManager()
cm.func1()