3

「prop」という名前のクラス プロパティを持つ以下に定義されたクラスがあり、「これはプロパティ コメントです」というドキュメント文字列を出力したいと考えています。現在の動作は、プロパティの getter を実行し、'getter' を出力します。

「help(MyClass.prop)」と入力してdocstringを取得できるように、クラスとそのメタクラスをセットアップする方法はありますか?

class _Metaclass(type):
    @property
    def prop(cls):
        """this is a property comment"""
        print("getter")
        return 1
    @prop.setter
    def prop(cls,value):
        print("setter")

class MyClass(metaclass=_Metaclass):
    """this is a class comment"""
    def func():
        """this is a function comment"""
4

1 に答える 1

2

メタクラスにプロパティを設定しました。したがって、MyClass.prop実際にMyClassクラス オブジェクトでプロパティを実行していることになります。これがメタクラスではなく通常のクラスにある場合、docstring は getter メソッドから正しく定義されます。ここで何が起こっているのかを考えるのに役立つのであれば、メタクラスはクラスに対するものであり、クラスはインスタンスに対するものです。から正しいドキュメント文字列を取得する必要がありますhelp(_Metaclass.prop)

于 2012-01-04T00:19:09.770 に答える