class Dog():
def __init__(self):
self.routes={}
def 装饰器(self, 狗):
def 储存(fuc):
self.routes[狗] = fuc
return fuc
return 储存
def 跑(self):
print('跑')
class WhiteDog():
a=Dog()
@a.装饰器('狗')
def 快跑(self):
print('白色小狗跑')
class BlackDog():
def __init__(self):
WhiteDog.__init__(self)
def 调用(self):
self.a.跑()
'''程序目的:1.使用BalckDog类中的调用函数,调用WhiteDog中的实例
2.在a中有两个方法,一个用来装饰其他函数,一个用来跑函数
3.跑的函数在BlackDog中通过a的实例调用函数
4.装饰器修饰WhiteDog类中的快跑函数
'''
'''出现的问题:1.WhiteDog.__init__(self),它的功能是继承WhiteDog中初始化函数的定义,导入a的实例
2.如果在WhiteDog类中使用def __init__(self):,将self.a=Dog()写入,就不能使用装饰器
3.所以,使用实例a=Dog()函数可以使用装饰器,但是无法被导入BlackDog类中。
4.如果,在WhiteDog类中使用def __init__(self):,将self.a=Dog()写入,就不能使用装饰器'''
'''希望得到的答案:有没有那种写法既可以使用装饰器,又可以将实例传给别的类,让其可以调用原先的函数'''
ff=BlackDog()
ff.调用()
结果:
```python
Traceback (most recent call last):
File "C:\Users\Win10\PycharmProjects\untitled5\量化交易\量化交易-实战篇-做出kd指标.py", line 30, in <module>
ff.调用()
File "C:\Users\Win10\PycharmProjects\untitled5\量化交易\量化交易-实战篇-做出kd指标.py", line 27, in 调用
self.a.跑()
AttributeError: 'BlackDog' object has no attribute 'a'
```
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。