我有一堆类,每个类都有__init__
的一个参数,然后返回一些数据,例如,
class Animal(object):
def __init__(self, name):
if name == 'lion':
self.sound = 'roar'
elif name == 'human':
self.sound = 'burp'
else:
raise ValueError('Unknown animal')
class Passenger(object):
def __init__(self, index):
self.sound = 'I\'m passenger number %d.' % index
这些类中的一些基本上是列表或词典(如Animal
),有些是"开放式的" (如Prime
)。在实例化任何类之后,它们将在其他地方使用,因此您可以以相同的方式实例化它们(Something(arg)
)。
像这样的东西
animals = {
'lion': {'sound': 'roar'},
'human': {'sound': 'burp'},
}
可以解决这个问题,但Passenger
并不适合这里。
是否有符合这两种情况的设计模式?
答案 0 :(得分:0)
class Animal(object):
def __init__(self, name):
self.name = name
def some_thing_all_animals_do(self):
print('do stuff')
class Passenger(Animal):
def stuff_only_passengers_do(self):
print('more stuff')
class Lion(Animal):
def stuff_only_lions_do(self):
print('lion stuff')
这样,乘客和狮子都会“知道”方法some_thing_all_animals_do
并在初始化时取名。您可以对此进行修改,以便为您需要的任何动物做任何事情,并且比使用同一类中的条件更容易和直观。