【发布时间】:2021-03-17 11:51:47
【问题描述】:
我不擅长 python 中的装饰器,但我正在努力学习它。 我有两个类,我想用“装饰”类中的方法“_f”来装饰“问候”类中的一个方法。代码是这样的:
class greeting:
def __init__(self,word):
self.word=word
@f._f
def hi(self):
print('hi')
def bye(self):
print('bye')
class f(object):
def _f(foo):
def display_wrapper (self):
print('it is a decorator')
self._g(self)
foo(self)
return display_wrapper
def _g(self):
print('a method in decorator')
word='hiiii'
obj=greeting(word)
print(obj.hi())
但是会出现这样的错误: 它是一个装饰器 AttributeError: 'greeting' 对象没有属性 '_g'。
如果有人知道问题出在哪里,请告诉我
【问题讨论】:
-
其中一个问题是没有
f的实例可以调用_g()。 -
f的实例是obj.hi,而不是obj(这是greeting.hi接收的self参数)。 -
f._f实例的f._g调用。但是greetings没有._g的功能 -
非常感谢。你能修改我的代码吗?因为我不知道如何解决它
标签: python class inheritance decorator attributeerror