【问题标题】:Why class method doesn't get called? [closed]为什么类方法没有被调用? [关闭]
【发布时间】:2016-10-04 19:49:43
【问题描述】:

我试图调用类方法“func”,它应该打印一些东西,但它永远不会被打印出来……没有错误,只是沉默。代码如下:

class AnyClass():
    atr1=0
    atr2='text'

    def func():
        print ('Ran Func')

a = AnyClass()
a.func

【问题讨论】:

  • 你不叫它:a.func()
  • 您没有收到任何错误,因为您引用了一个存在且没有错误的函数,但您并没有通过不调用它来要求它做任何事情
  • 谢谢。看起来我还需要定义 if like: def func(self)

标签: python class python-3.x methods


【解决方案1】:

a.func 只是方法对象的名称。您必须使用()调用它。

>>> a.func
<bound method AnyClass.func of <__main__.AnyClass object at 0x0000000003506240>>

>>> a.func()
Ran Func

另外请注意,除非使用 @staticmethod 装饰器,否则在定义方法时必须将 self 作为第一个参数传递给方法。

def func(self):
        print ('Ran Func')

【讨论】:

    【解决方案2】:

    a.func 只是对函数对象的引用。要调用它,您需要添加括号。

    a.func()
    

    【讨论】:

      【解决方案3】:

      函数应该像 a.func() 一样有括号

      【讨论】:

        猜你喜欢
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-07
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多