像字典,无限列表之类的类

2024-04-25 22:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆类,每个类都有一个参数指向__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不适合这里。你知道吗

有适合这两种情况的设计模式吗?你知道吗


Tags: 实例nameselfindexobjectinitdefclass
1条回答
网友
1楼 · 发布于 2024-04-25 22:35:04
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,并在初始化时取一个名称。你可以修改它来为你需要的动物做任何你需要的事情,这使得它比在同一个类中使用条件句更容易和直观。你知道吗

相关问题 更多 >