在 python 中对不相关但形状相似的 类 进行子类型化的模式
Pattern for subtyping unrelated but similarly-shaped classes in python
我有两个 class 形状相同但不共享父级的 class:
class Panda(object):
def has_thumb(self):
return True
class Monkey(object):
def has_thumb(self):
return True
我想子class其中的每一个以添加一些功能:
class TalkingPanda(Panda):
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
class TalkingMonkey(Monkey):
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
有没有办法重构此代码以消除代码重复?
当然可以,因为您已经在使用 super()
,所以您可以为此使用 mixin:
class TalkingAnimal:
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
class TalkingPanda(TalkingAnimal, Panda):
pass
class TalkingMonkey(TalkingAnimal, Monkey):
pass
我有两个 class 形状相同但不共享父级的 class:
class Panda(object):
def has_thumb(self):
return True
class Monkey(object):
def has_thumb(self):
return True
我想子class其中的每一个以添加一些功能:
class TalkingPanda(Panda):
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
class TalkingMonkey(Monkey):
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
有没有办法重构此代码以消除代码重复?
当然可以,因为您已经在使用 super()
,所以您可以为此使用 mixin:
class TalkingAnimal:
def has_thumb(self):
print("I have a thumb")
return super().has_thumb()
class TalkingPanda(TalkingAnimal, Panda):
pass
class TalkingMonkey(TalkingAnimal, Monkey):
pass