我很好奇是否有更好的方法來實現這樣的事情?我的意圖是避免不必要的樣板。提供的例子顯然非常簡單,足以讓其他人理解我腦海中的想法。Python中的參數化繼承?
def create_parametrized_class(animal):
class SomeClass:
def __init__(self, name):
self.name = name
def __str__(self):
return "{}: {}".format(animal, self.name)
return SomeClass
class Cat(create_parametrized_class("Cat")):
pass
class Dog(create_parametrized_class("Dog")):
pass
cat = Cat("Micka")
dog = Dog("Rex")
assert str(cat) == "Cat: Micka", "Cats..."
assert str(dog) == "Dog: Rex", "Dogs..."
什麼Python版本是什麼?看起來像3.6+,因爲Martijn Pieters的回答已經夠了,但是你應該爲其他可能遇到同樣問題的人添加標籤。 '__init_subclass__'在3.6之前不工作。 –
好的,我添加Python 3.6標記。我不知道__init_subclass__,所以我不確定它是什麼Python版本。 –
您應該始終使用您正在使用的版本標記*,以便人們可以基於此提供答案。你可以用'python --version'或'python3 --version' –