[英]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.