繁体   English   中英

如何在类属性中引用python对象的类方法?

[英]How can a python object's classmethods be referred to inside the class attributes?

我想做些...

class MyClassA(object):
    an_attr = AnotherClassB(do_something=MyClassA.hello)

    @classmethod
    def hello(cls):
        return "Hello"

但是,当我尝试运行MyClassA时,它会告诉我未定义。

  • an_attr必须是一个类属性
  • 我不能改变AnotherClassB
  • 我希望hello()仍然是类方法

有任何想法吗?

在定义类时,该类尚不存在。 因此,您必须将an_attr的创建推迟到类定义之后:

class MyClassA(object):
    @classmethod
    def hello(cls):
        return "Hello"
MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)

您只需要正确处理订单,就可以在使用之前对其进行定义:

class MyClassA(object):
    @classmethod
    def hello(cls):
        return "Hello"

    an_attr = AnotherClassB(do_something=hello)

请注意,由于创建类时它位于名称空间中,因此我们仅引用hello而不是MyClassA.hello

编辑 :对不起,这实际上并没有按照我的想法做。 它创建的类没有错误,但是AnotherClassB仅获得对未绑定的类方法的引用,该方法无法调用。

我不确定这是否行得通,但是可以尝试一下吗?

class MyClassA(object):
    @classmethod
    def hello(cls):
        return "Hello"

  MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM