Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从与类项关联的字符串中获取类项的属性_Python - Fatal编程技术网

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

Python 从与类项关联的字符串中获取类项的属性,python,Python,我有一个利基问题。我创建了一个类classA,具有属性name和number。创建类项后,其名称将作为字符串存储在一个名为namesList的列表中。在代码的后面,会打印名称列表,用户可以输入字符串输入。如果该输入与namesList中的字符串匹配,我希望程序打印与该类项关联的number属性。我该怎么做?我想你想做的是: namesList = [] class classA: def __init__(self, name, number): self.name =

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

我想你想做的是:

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\u Class
,然后如果您想访问存储的数值,它只是
example\u 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=[]
A类:
定义初始化(自我、姓名、编号):
self.name=名称
self.number=number
namesList.append(self)
def getNumber(自身):
返回自我编号
def getName(self):
返回self.name
示例='c'
A类(示例5)
userChoice=input('您需要哪个名称的号码?')
对于名称列表中的名称:
如果name.getName()==userChoice:
nameIndex=namesList.index(名称)
打印(名称索引)
打印('name.getNumber()的当前价格)

用你自己的话来说,你希望代码行
classA(示例5)
做什么?用你自己的话来说,什么是一门课,你认为它是为了什么?嗨,谢谢你的贡献。我想我对问题或示例代码不够清楚。对于这段代码,这个解决方案是可行的,但在我的程序中,用户可以添加任意数量的类项,因此我不能在这里的示例_class.number中硬编码,而是需要一种通用的方法来实现。嘿,谢谢你澄清这一点。事实上,我在网上发现了类似的情况。我已经更新了答案,找到了更好的解决方案。