0

これは、私が取り組んでいる 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

これまでのところ、とても良いと思います。しかし、私はこのクラスを使用するのに問題があります。その理由は、最後の 2 つのメソッドがバインドされていないためです。

>>> 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>

申し訳ありませんが、内容についてこれ以上お答えすることはできません。しかし、最初の 2 つのメソッドが (正しく) バインドされているのに、最後の 2 つのメソッドがバインドされていない理由を考えられる人はいますか?

4

1 に答える 1

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
于 2013-10-21T23:12:45.640 に答える