【问题标题】:Overloading [] operator in python?在python中重载[]运算符?
【发布时间】:2017-12-14 16:51:47
【问题描述】:

python中是否可以重载[]操作符?

我想通过调用classname[elementname] 来访问类的方法(就像在字典中一样)。 这似乎没有必要,但该类封装了一个数据库元素,其中的子元素也有子元素,子元素也有子元素......你明白了。

如果我知道我想从第三个继承步骤中获得哪个孩子,那么我可以代替:

classnname.getChild(childname1).getChild(childname2).getChild(childname3)

使用更短更简洁的:

classnname[childname1][childname2][childname3]

【问题讨论】:

  • @kindall:谢谢这完全有效!为什么我无法通过 google/stackoverflow 搜索找到这个?
  • 不知道;你在找什么? Python operator overload 的第一个 Google 搜索结果包含您要查找的信息。
  • 我确实找到并阅读了第一次点击,但该站点中没有__getitem__...也许我在寻找错误的东西。再次感谢您的快速帮助!

标签: python python-3.x operator-overloading


【解决方案1】:

你必须在classname上实现魔术方法__getitem__

class classname:
    def __getitem__(self, key):
        return self.getChild(key)

Python documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多