繁体   English   中英

如何一一打印一个类中的所有实例?

[英]How to print all the instances in a class one by one?

如何一一打印一个类的所有实例?

这是代码:

class Person:
    def __init__(self, fname, lname, age, gender):
       self.fname = fname
       self.lname = lname
       self.age = age
       self.gender = gender

class Children(Person):
    def __init__(self, fname, lname, age, gender, friends):
        super().__init__(fname, lname, age, gender)

        self.friends = friends

a100 = Children("a1", "a10", 17, "male", "a2 , a3 , a4 , a5")
a200 = Children("a2", "a20", 17, "male", "a5, a1, a4, a3 ")
a300 = Children("a3", "a30", 17 , "male", "a2, a1")
a400 = Children("a4", "a40", 17, "female", "a1, a2")
a500 = Children("a5", "a50", 16, "male", "a2, a1")

x = ["a100", "a300", "a500", "a200", "a400"]
for n in x:
    print(n.age)

错误是:

Traceback (most recent call last):
  File "ex1.py", line 23, in <module>
    print(n.age)
AttributeError: 'str' object has no attribute 'age'

正如您的错误消息所暗示的那样,您正在尝试访问字符串对象的age属性。 这是因为n是遍历列表x的循环变量。

此列表包含您会混淆的字符串,因为它们代表您的变量的“名称”。

您想要做的只是更改您的列表以保存实际变量而不是它们的名称作为字符串。 像这样:

x = [a100, a300, a500, a200, a400]

您可以通过 globals() 获取它们 - 返回所有当前全局对象的映射,例如:

print([globals()[s].age for s in x])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM