【发布时间】:2016-10-28 15:44:28
【问题描述】:
我有一堆类,每个类都有一个__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 不适合这里。
是否有适合这两种情况的设计模式?
【问题讨论】:
-
您可以将该字典设为类变量。真正面向对象的方法是让
Lion和Human成为扩展Animal的类
标签: python function dictionary generator