我python最近在我的代码中遇到了一种奇怪的小味道,我认为它与并行继承有关。这是我编造的一个小例子:
class DogHabits:
def __init__(self):
self.habits = ['lick butt']
class GermanShepherdHabits(DogHabits):
def __init__(self):
super().__init__()
self.habits.extend(['herd sheep'])
class LabradorHabits(DogHabits):
def __init__(self):
super().__init__()
self.habits.extend(['hunt', 'pee on owner'])
class Dog:
def __init__(self):
self.type = 'generic_dog'
self.my_habits = DogHabits()
def do_stuff(self):
for habit in self.my_habits.habits:
print(habit)
class GermanShepherd(Dog):
def __init__(self):
self.type = 'german shepherd'
self.my_habits = GermanShepherdHabits()
class Labrador(Dog):
def __init__(self):
self.type = 'labrador'
self.my_habits = LabradorHabits()
if __name__ == "__main__":
german_shepherd = GermanShepherd()
print('\n{}'.format(german_shepherd.type))
german_shepherd.do_stuff()
labrador = Labrador()
print('\n{}'.format(labrador.type))
labrador.do_stuff()
我有一个通用的狗类,具体的狗实现从中继承。每个狗类(包括通用/抽象类)都有一组习惯,它们本身由习惯的另一个类层次结构表示。
令我恼火的是,我必须始终让两个层次结构完全相同。此外, 之间的继承在DogHabits习惯层次结构中很有用,但在狗层次结构中没有用,因为我需要为狗层次结构中的每个类实例化一个单独的习惯对象。
什么是解毒剂?我可能想添加狗类的许多实现,更新相应的习惯层次结构听起来很乏味而且闻起来很糟糕......
小唯快跑啊
ITMISS
慕的地8271018
白板的微信
随时随地看视频慕课网APP
相关分类