0

要获取属性的值,我需要调用 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

所以问题是为什么以及如何更改我的代码?

4

1 回答 1

0

inprint_list self.this_list[x]已经是 aMyClassObj所以MyClassObj(self.this_list[x])创建了一个新MyClassObj的 aMyClassObj作为它的description

因为没有定义将 a 转换MyClassObj为字符串的方法,printPython 使用显示内存地址的默认转换。

于 2019-06-09T21:21:33.113 回答