像字典,无限列表这样的类

时间:2016-10-28 15:44:29

标签: python function dictionary generator

我有一堆类,每个类都有__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并不适合这里。

是否有符合这两种情况的设计模式?

1 个答案:

答案 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并在初始化时取名。您可以对此进行修改,以便为您需要的任何动物做任何事情,并且比使用同一类中的条件更容易和直观。