【问题标题】:How come some methods don't require parentheses?为什么有些方法不需要括号?
【发布时间】:2022-11-10 16:03:57
【问题描述】:

考虑以下代码:

num = 1 + 1j
print(num.imag)

相对于

word = "hey"
print(word.islower())

一个需要括号,另一个不需要。我知道在 Python 中,当我们调用不带括号的函数时,我们只会返回对该函数的引用,但它并没有真正回答它。所以'imag'返回一个参考?因为似乎该方法确实被执行并返回了 imag 部分。

【问题讨论】:

  • 属性和属性不需要括号。函数和方法需要括号。
  • 你永远不会调用没有括号的函数:括号通话。 Python 中的任何名称都可以引用任何值,并且许多值都是可调用的。括号基本上是调用可调用值的__call__ 方法的“运算符”。 (也就是说,x(...) 等价于 x.__call__(...)`。)

标签: python


【解决方案1】:

imag 不是一种方法。它只是一个数值属性。

islower一个方法。为了称呼方法,你在名字后面加上括号。

【讨论】:

    【解决方案2】:

    num.imag 不是函数,而是属性。要调用函数,您需要括号或 __call__ 方法。

    【讨论】:

      【解决方案3】:

      属性(例如 imag)就像对象内部的变量,因此您无需使用括号来访问它们。方法(例如 islower())类似于对象内部的函数,因此它们确实需要括号来接受零个或多个参数并执行一些工作。

      对象还可以具有“属性”,这些“属性”是特殊功能,其行为类似于属性(即没有括号),但在引用或分配它们时可以执行计算或其他工作。

      【讨论】:

        猜你喜欢
        • 2014-08-09
        • 2019-10-27
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多