为什么我的类方法未绑定?

时间:2013-10-21 23:04:03

标签: python class-method

这是我正在研究的python类的片段。 (对不起,我不能详细说明。我的组织对此类事情有点不耐烦。

class my_class:

    @classmethod
    def make_time_string(cls, **kwargs):
    # does some stuff

    @classmethod
    def make_title(cls, **kwargs):
    # does some other stuff

    @classmethod
    def give_local_time(cls, **kwargs):
    # yet more stuff

    @classmethod
    def data_count(cls, **kwargs):
    # you guessed it

到目前为止,这么好,我应该想。但是我在使用这门课时遇到了麻烦。事实证明,原因是最后两种方法是未绑定的:

>>> my_class.make_time_string
<bound method classobj.make_time_string of <class __main__.my_class at 0x1cb5d738>>
>>> my_class.make_title
<bound method classobj.make_title of <class __main__.my_class at 0x1cb5d738>>
>>> my_class.give_local_time
<unbound method my_class.give_local_time>
>>> my_class.data_count
<unbound method my_class.data_count>

对不起,再一次,我对内容的了解不多。但是,任何人都可以想到为什么最后两个方法应该被解除绑定而前两个方法(正确)绑定的原因?

1 个答案:

答案 0 :(得分:3)

我尝试了你的代码,它对我有用。

所以,你需要提供一个更好的例子。

我最好的猜测是你在某种程度上错字@classmethod或者不再是班级定义中的东西。也许你正在覆盖classmethod装饰者?

这是我的代码:

class my_class:
    @classmethod
    def make_time_string(cls, **kwargs):
        pass

    @classmethod
    def make_title(cls, **kwargs):
        pass

    @classmethod
    def give_local_time(cls, **kwargs):
        pass

    @classmethod
    def data_count(cls, **kwargs):
        pass

print my_class.make_time_string
print my_class.make_title
print my_class.give_local_time
print my_class.data_count