0

这是我的代码:

class Argument :
    def __init__( self, argType, argHelp = None ) :
        self.type = argType
        self.help = argHelp
    def __get__(self, obj, type=None):
        print("__get__")
        return self.type

a  = Argument( "my_ret_value" , argHelp = "some help text "  )

我想要的是返回my_ret_value,但我得到的是:

<__main__.Argument instance at 0x7ff608ab24d0>

我已经阅读了Python Descriptors 示例,如果我更改我的代码以遵循它的工作原理 - 但为什么我不能在我的班级上按原样做呢?还有其他方法吗?

编辑 :

感谢您的意见,我没有很好地理解它。能__repr__解决我的问题吗?

我想要的是我将一个字符串值更改为一个对象,我想将此对象视为一个字符串,并具有一些额外的属性。

4

1 回答 1

1

您可以按如下方式使用您的描述符类:

class B:
    a = Argument("my_ret_value", argHelp="some help text")

b = B()
b.a
# __get__
# 'my_ret_value'

当设置为另一个类的类属性并通过该类的实例访问时,则__get__调用描述符的方法。请参阅描述符操作指南

于 2019-01-11T17:10:03.807 回答