繁体   English   中英

从与类项关联的字符串中获取类项的属性

[英]Get attributes of class item from string associated with class item

我有一个利基问题。 我创建了一个类 classA,具有属性名称和编号。 创建类项后,其名称将作为字符串存储在名称列表中。 在代码的后面,namesList 打印出来,用户可以输入一个字符串 input。 如果该输入与 namesList 中的字符串匹配,我希望程序打印与该类项关联的数字属性。 我该怎么做?

我认为你想要做的是:

namesList = []

class classA:
    def __init__(self, name, number):
        self.name = name
        self.number = number
        namesList.append(self.name)

example_Class = classA('example', 5)
userChoice = input('Which name do you need the number for?')

for name in namesList:
    if name == userChoice:
        print('The number is', example_Class.number)

您必须将classA('example', 5)等于变量example_Class然后如果您想访问存储的数字值,它只是example_Class.number

编辑

无论有多少类项目,此代码都应该可以工作:

class Iterator(type):
    def __iter__(cls):
        return iter(cls.namesList)


class ClassA(metaclass=Iterator):
    namesList = []

    def __init__(self, name, number):
        self.name = name
        self.number = number
        self.namesList.append(self)


example_Class1 = ClassA('one', 8)
example_Class2 = ClassA('two', 7)
example_Class3 = ClassA('three', 6)

userChoice = input('Which name do you need the number for?')

for class_name in ClassA:
    if class_name.name == userChoice:
        print('The number is', class_name.number)

ClassA只是一个类。 您试图在最后一行引用它,这导致错误。 而不是将对象附加到列表中会更好,因为这样您可以在数组中搜索时单独从对象中获取值。

namesList = []

class classA:
    def __init__(self, name, number):
        self.name = name
        self.number = number
        namesList.append(self)

    def getNumber(self):
        return self.number

    def getName(self):
        return self.name

example = 'c'
classA(example, 5)
userChoice = input('Which name do you need the number for?')
for name in namesList:
    if name.getName() == userChoice:
        nameIndex = namesList.index(name)
        print(nameIndex)
        print('The current price for', name.getNumber())

暂无
暂无

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

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