python如果我只有它的对象,如何调用classmethod

时间:2014-08-18 14:23:06

标签: python class-method

假设我有课

class Class(object):
   @register_method_to_later_execution      
   @classmethod
   def my_class_method(cls):
   ... 

@classmethod对象。像这样a = Class.my_class_method我只有在拥有a对象时才能开始执行它。有可能吗?如果可能的话 - 如何做到这一点?


我创建的问题在导入期间(在装饰器@register_method_to_later_execution中为my_class_method)创建时引用了

那一刻我只有一个物体,如果我后来试图执行它,它会抛出 class method is not callable

2 个答案:

答案 0 :(得分:2)

有点无法自己测试一下。

>>> class MyClass(object):
...     @classmethod
...     def my_class_method(cls):
...         print "hello world"
... 
>>> a = MyClass.my_class_method
>>> a
<bound method type.my_class_method of <class '__main__.MyClass'>>
>>> a()
hello world

编辑:如果我从您的编辑中正确理解您(并且我完全不确定我这样做),看起来您在实际定义类之前尝试引用类方法?这是不可能的。

使用@staticmethod装饰器,因为它没有将类变量作为参数传递。

Edit2:如果你需要这个方法是一个类方法,因为你需要出于某种原因访问类变量,那么你运气不好我建议你重新考虑你的方法,因为这个看起来很奇怪对我而且几乎肯定不是一个好人:)

答案 1 :(得分:0)

按照通常的方式调用它。例如:

In [1]: class Foo(object):
   ...:     @classmethod
   ...:     def my_method(cls):
   ...:         print('in my method')
   ...:

In [2]: foo = Foo()

In [3]: foo.my_method()
in my method

In [4]: Foo.my_method()
in my method

In [5]: method_reference = Foo.my_method

In [6]: method_reference()
in my method

In [7]: