python - 使用/执行列表中的字符串作为对象名称(python)

标签 python list object

看起来像这样:

我定义一个类:

class Boy():
    def __init__(self):
        self.age    = input()
        self.height = input()

然后我定义一个列表,其中包含我希望成为上述“男孩类”的对象实例的男孩的名字:

boys = [input(), input()]

(例如:john & Frank,因此男孩 = ['john', 'frank'])

我现在想迭代我的列表“男孩”并使用每个名称来创建“男孩类”的对象:

for value in boys:
    value = Boy()

当然,它不起作用:-)但是有没有办法实现它? 我已经使用 Python 1 周了,如果这个问题听起来很愚蠢:-) 如果有人可以帮助我,我将非常感激

感谢大家的帮助,我实现了建议的解决方案:

thank_you_people = ['Makoto','L3viathan','Rcynic','Pythonic','Paul Rooney', 'st.eve']

:-)

for person in thank_you_people:
print('Thank you, %s' % person)

最佳答案

我强烈建议对您的类进行一些更改,以从构造函数中删除 input() 调用。您可以使用一种 __init__ 方法,该方法具有年龄和高度的可选参数以及名称的强制参数:

class Boy():
    def __init__(self, name, age=None, height=None):
        self.age    = age
        self.height = height
        self.name   = name

然后您可以使用名称进行实例化,并稍后分配属性:

boys = [Boy(input("New boy: ")), Boy(input("New boy: "))] # e.g. "John", "Frank"
for boy in boys:
    boy.age = input("Age of",boy.name + "?")
    boy.height = input("Height of",boy.name + "?")

编辑:将男孩放入字典中以便于访问:

boys = {}
for _ in range(2):
    name = input("New boy:")
    boys[name] = Boy(name)
for boy in boys:
    boys[boy].age = input("Age of",boys[boy].name + "?")
    boys[boy].height = input("Height of",boys[boy].name + "?")

关于python - 使用/执行列表中的字符串作为对象名称(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29784265/

相关文章:

Javascript 数组/对象语法失败

java - 如何在一个数组中使用不同类的对象?(Java)

python - 如何以所有可能的方式将列表分成对

c++ - 迭代正在变化的 std::list 的有效方法?

python - python 3.6中的async用于同时启 Action 业

css - 在基于 CSS 的绝对定位 UL 对齐(下拉效果)方面需要帮助

遍历列表元素时的 C 问题

c++ Cycle随机切断?

python - 无法修复 binascii 奇数长度字符串问题

python - 在 MATLAB 和 Python 中转换为二进制