这是我的代码:
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__
能解决我的问题吗?
我想要的是将一个字符串值更改为一个对象,我想将此对象视为具有某些额外属性的字符串。
答案 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。