为了获得我需要调用method.attribute.attribute而不是method.attribute的属性的值,为什么会这样呢?调用method.attribute会产生一个内存地址。如何更改代码才能使method.attribute正常工作?
关于这个中心的大多数问题都围绕着调用print(f)而不是print(f())
class MyList:
"""stores a list and does other stuff eventualy"""
this_list = []
def __init__(self, *args):
for arg in args:
self.this_list.append(arg)
def print_list(self):
"""prints the atribute:"description" from the stored objects in the list"""
for x in range(len(self.this_list)):
print(MyClassObj(self.this_list[x]).description, sep="\n")
这是用于打印属性描述的值的代码
class MyClassObj:
"""test object to be stores in the "MyList" object."""
def __init__(self, description):
self.description = description
这就是包含我想要获取的属性的对象。
class CallList:
"""creates the objects, lists and calls the print method"""
@staticmethod
def main():
test1, test2 = MyClassObj("Test1"), MyClassObj("Test2")
list1 = MyList(test1, test2)
list1.print_list()
Main()在上述类的外部调用。
我得到的输出是
<__main__.MyClassObj object at 0x007908F0>
<__main__.MyClassObj object at 0x00790910>
Process finished with exit code 0
如果我更改了行:
print(MyClassObj(self.this_list[x]).description.description, sep="\n")
我得到了预期的结果:
Test1
Test2
Process finished with exit code 0
所以问题是我为什么以及如何改变我的代码?
发布于 2019-06-10 05:21:33
在print_list
中,self.this_list[x]
已经是一个MyClassObj
,因此MyClassObj(self.this_list[x])
创建了一个新的MyClassObj
,并将MyClassObj
作为其description
。
因为没有为print
定义将MyClassObj
转换为字符串的方法,所以使用显示内存地址的默认转换。
https://stackoverflow.com/questions/56518371
复制相似问题