gpt4 book ai didi

python:方法取决于param是int还是string

转载 作者:太空狗 更新时间:2023-10-30 02:34:35 24 4
gpt4 key购买 nike

有没有比下面的更 pythonic 的方式来编写 __getitem__?问题在于检查类型并根据调用中的参数类型执行不同的操作。

class This():
def __init__(self, name, value):
self.name, self.value = name, value

class That():
def __init__(self):
self.this_list = []
def add_this(self, this):
self.this_list.append(this)
def __getitem__(self, x):
if isinstance(x, int):
return self.this_list[x] # could wrap in try/except for error checking
elif isinstance(x, str):
for this in self.this_list:
if this.name == x:
return this
return None


a = This('a', 1)
b = This('b', 2)
c = That()
c.add_this(a)
c.add_this(b)
print c[1].name
print c['a'].name

最佳答案

有很多选择,但我认为没有一个是最好的选择。这取决于您的用例和偏好。只是给你一些提示:

您真的必须将数据存储在列表中吗?在您的示例中,您可以使用字典并两次插入对象:一次使用整数作为键,一次使用字符串作为键。这将使您的 __getitem__ 变得非常简单。 ;-)

另一种选择是使您的界面更加明确并使用byInt/byString 方法。你当然应该选择更好的名字。

如果您提供更多有关您真正想做的事情的详细信息,我可以提出更多替代方案。

关于python:方法取决于param是int还是string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com