返回类型不一致

2024-05-13 03:51:27 发布

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

Human继承自Python内置的“dict”类。作为一个论点,它需要一本词典。.getCars()方法返回存储在“car”或“cars”字典键中的值。对于键“car”,返回值是一个字符串。对于键“cars”,值是一个字符串列表。因此.getCars()方法将返回两种类型的值:字符串或列表。 不用说,处理getCars()方法会变得非常乏味,真的很快。我会一直检查它这次返回的内容:列表还是字符串。。。这将导致以后出现大量if/else语句。我的问题是:在这种情况下应该采取什么样的设计/方法?我是否应该强制执行相同类型的返回值(假设不管只有car还是many-.getCars()总是返回一个列表)。虽然这种方法会导致一致的返回值类型,但以后可能会产生问题。因为把一辆车打包成一个列表变量,我就不得不做if returned_list: real_return_value=returned_list[0],这也有点多余。在

class Human(dict):
    def __init__(self, *args, **kwargs):
        super(Human, self).__init__(*args, **kwargs)
    def getCars(self):
        if 'cars' in self: return self.get('cars')
        elif 'car' in self: return self.get('car')

cars={'cars':['BMW','Porsche','Mercedes-Benz']}
car={'car':'Geo Metro'}

wealthy=Human(cars)
froogle=Human(car)

print wealthy.getCars()
print froogle.getCars()

Tags: 方法字符串self类型列表returnifcar
1条回答
网友
1楼 · 发布于 2024-05-13 03:51:27

除了规范化用于查找数据的键之外,我建议规范化返回类型。也就是说,总是返回一个汽车列表,即使键"car"下只有一个。我认为没有比这更优雅的解决方案了:

def getCars(self):
    if "cars" in self:
        return self["cars"]
    elif "car" in self:
        return [self["car"]]  # build a list for the single car!
    else:
        return []  # return an empty list if neither key exists

如果一个人没有车的话,返回空名单的另一种方法可能是提出一个例外。在

相关问题 更多 >