|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Fjs(object):
def __init__(self, name):
self.name = name
def hello(self):
print ("said by : ", self.name)
def fjs(self, name):
if name == self.name:
print ("yes")
else:
print ("no" )
class Wrap_Fjs(object):
def __init__(self, fjs):
self._fjs = fjs
def __getattr__(self, item):
if item == "hello":
print ("调用hello方法了")
elif item == "fjs":
print ("调用fjs方法了")
return getattr(self._fjs, item)
fjs = Wrap_Fjs(Fjs("fjs"))
fjs.hello()
fjs.fjs("fjs")
__getattr__ 怎么触发的,item又是从哪里得到的值
比如定义一个C类,它有一个属性name,可以用直接访问,如果要访问一个不存在的属性other就会调用__getattr__()方法,如下
- >>> class C:
- def __init__(self, name):
- self.name = name
- def __getattr__(self, item):
- print('__getattr__()被调用...')
- >>> c = C('fish')
- >>> c
- <__main__.C object at 0x03AA0410>
- >>> c.name
- 'fish'
- >>> c.other
- __getattr__()被调用...
复制代码
|
|