3

我在下面定义了一个类,它有一个名为“prop”的类属性,我希望打印出文档字符串“这是一个属性注释”。当前行为执行属性的 getter 并打印“getter”。

有没有办法设置类及其元类,以便我可以输入“帮助(MyClass.prop)”并获取文档字符串?

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类对象上执行属性。如果这是在普通类而不是元类上,则将从 getter 方法正确定义文档字符串。元类之于类就像类之于实例一样,如果这有助于您思考这里发生了什么。您应该从help(_Metaclass.prop).

于 2012-01-04T00:19:09.770 回答