标题可能不是我试图做的最好的描述,但我不知道该怎么称呼这个。我遇到了各种看似相关的概念,比如“decorators”、“descriptor”和“metaclass”,但我不知道应该进一步研究哪种方法(如果有的话)!你知道吗
给定以下类别:
class AnimalGreeter(object):
def __init__(self, greeting):
self.greeting = greeting
def greet(self, animal):
print(self.greeting + ", " + animal + "!")
class MyGreeter(AnimalGreeter):
animals = ['dog', 'parrot']
我希望能够像这样使用MyGreeter
的实例:
greeter = MyGreeter("What's up")
greeter.parrot
# "What's up, parrot!"
实际上,我希望它的功能就像我定义了MyGreeter
这样:
class MyGreeter(AnimalGreeter):
@property
def dog(self):
self.greet('dog')
@property
def parrot(self):
self.greet('parrot')
换句话说,我想用从类(MyGreeter
)的属性(animals
)派生的名称动态定义方法(dog()
,等等)。你知道吗
最好的方法是什么?谢谢!你知道吗
一个简单的方法就是实现
__getattr__()
,例如:相关问题 更多 >
编程相关推荐