对象的“默认”值? __get__仅适用于属性,不适用于对象本身

时间:2019-12-24 12:09:40

标签: python overriding descriptor

我有一个对象列表:

class MyObj():
    def __init__(self, value):
       self._value = value

    def __get__(self, instance, owner):
       return self._value

myList = []
myObj = MyObj(100)
myList.append(myObj)

print("Value of object: " + myList[0])

结果:

Value of object: <__main__.MyObj object at 0x031807F0>

我想看的是:

Value of object: 100

具体来说,我想返回_value,我不想覆盖__str__()只是“打印”值-我想引用存储在{{1 }}。

这在Python中可行吗?要仅访问对象本身时返回“默认”值,而不访问具有这些_value描述符的对象的“属性”?

2 个答案:

答案 0 :(得分:0)

要影响对象如何设置为字符串格式,您需要实现__str__方法,如下所示:

class MyObj():
def __init__(self, value):
   self._value = value

def __str__(self):
   return str(self._value)

答案 1 :(得分:-1)

我认为您正在寻找__str__,并且不需要使用str concat进行打印,可以使用内置的打印功能。 像这样的东西。

class MyObj():
    def __init__(self, value):
        self._value = value

    def __str__(self):
        return str(self._value)

myList = []
myObj = MyObj(100)
myList.append(myObj)
print("Value of object: ", myList[0])