Python-我的课程未调用__get__

时间:2019-01-11 16:48:10

标签: python python-descriptors

这是我的代码:

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 examples,并且如果我更改代码以遵循它的工作原理-但是为什么我不能照原样在班上做呢?还有其他办法吗?

编辑:

感谢您的评论,我不太了解。 __repr__能解决我的问题吗?

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

1 个答案:

答案 0 :(得分:1)

您可以按如下方式使用Decriptor类:

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

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

当在另一个类上设置为class属性并通过该类的实例进行访问时,将调用描述符的__get__方法。参见Descriptor How-To Guide