装饰成两个 类
decorating in two classes
我不擅长 python 中的装饰器,但我正在努力学习它。
我有两个 classes,我想用 class“装饰”中的“_f”方法装饰 class“问候语”中的一个方法。代码是这样的:
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'。
如果有人知道问题出在哪里,请告诉我
此版本适用于某些定义的作品。
class f(object):
def _f(foo):
def display_wrapper (self):
print('it is a decorator')
f._g()
foo(self)
return display_wrapper
@classmethod
def _g(cls):
print('a method in decorator')
class greeting:
def __init__(self,word):
self.word=word
@f._f
def hi(self):
print('hi')
def bye(self):
print('bye')
word='hiiii'
obj=greeting(word)
print(obj.hi())
输出:
it is a decorator
a method in decorator
hi
None
我不擅长 python 中的装饰器,但我正在努力学习它。 我有两个 classes,我想用 class“装饰”中的“_f”方法装饰 class“问候语”中的一个方法。代码是这样的:
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'。
如果有人知道问题出在哪里,请告诉我
此版本适用于某些定义的作品。
class f(object):
def _f(foo):
def display_wrapper (self):
print('it is a decorator')
f._g()
foo(self)
return display_wrapper
@classmethod
def _g(cls):
print('a method in decorator')
class greeting:
def __init__(self,word):
self.word=word
@f._f
def hi(self):
print('hi')
def bye(self):
print('bye')
word='hiiii'
obj=greeting(word)
print(obj.hi())
输出:
it is a decorator
a method in decorator
hi
None