python - 是否有一种“魔术方法”可以通过 instance[0] 而不是 instance.list[0] 访问在类中定义的列表?
问题描述
如果我有代码:
names = ["Dave", "John", "Bob"]
我想从我会做的名字中得到戴夫:
names[0]
如果我现在有代码
class Friends:
def __init__(self, *people):
self.names = []
for v in people:
self.names.append(v)
names = Friends("Dave", "John", "Bob")
现在要得到戴夫,我必须这样做:
names.names[0]
是否有一种神奇的方法或类似的方法,以便我可以做到:
names[0]
再次得到戴夫?
解决方案
是的,它被__getitem__
称为:
class MyClass:
def __init__(self):
self.names = ["john", "arthur"]
def __getitem__(self, i):
return self.names[i]
print(MyClass()[0])
# john
推荐阅读
- targetsdkversion - 如何更改 targetSdkVersion
- python - 当我在 powershell 中打开 python shell 时,我无法关闭它
- sql - 根据日期和条件合并表格
- javascript - Js:异步等待案例混淆中的错误处理
- python - 如何将每个组的第一行作为熊猫数据框中同一组中其他行的总和?
- joomla - 我在哪里可以找到用户在 Joomla 中上传的文件?
- constructor - 解释为什么需要两个构造函数
- java - 如何在spring boot中配置外部数据源,使用tomcat位置conf/catalina/localhost/{warname}.xml
- r - 在R中的分组数据中对具有特定值的行求和
- python - Doc2Vec相似性小语料测试