【问题标题】:Weird behavior of self parameter in Python class [closed]Python类中self参数的奇怪行为[关闭]
【发布时间】:2016-06-23 12:52:05
【问题描述】:

我正在使用 Python 进行编程,并发现了一些不寻常的东西。这个内置方法让我们可以通过 && 符号比较类中的两件事。第一个给出错误(未给出 s2)。为什么只有第二个版本工作(没有自我)? len() 等其他内置函数可以具有自身属性。

   def __and__(self,s1,s2):
            table1 = list(s1._iter())
            table2 = list(s2._iter())
            s1.clear()
            for element in table2:
                if element in table1:
                    s1.add(element)
   def __and__(s1,s2):
                table1 = list(s1._iter())
                table2 = list(s2._iter())
                s1.clear()
                for element in table2:
                    if element in table1:
                        s1.add(element)

【问题讨论】:

  • 如果你做x & y,那么__and__(通常是self)的第一个参数是x,第二个参数是y并且没有第三个参数。这并不奇怪 self 行为,您可以将前两个参数命名为 bananascream,如果您将 chocolate_sauce 添加到参数列表,则会获得相同的行为。
  • 奇怪,我之前好像没见过 Python 中的&& 运算符……是新的吗?当我在 3.5.1 中尝试时,我只收到 SyntaxError

标签: python class python-3.x set self


【解决方案1】:

__and__ 运算符应该使用两个参数重新定义。如果你想要self 在那里,你需要self 成为定义的左边部分(即__and__(self, other)。此外,__and__ 是按位& 运算符,而不是逻辑and。见@ 987654321@.

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2016-02-16
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多