Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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,有没有办法通过将对象与其属性匹配来获取对象? 例如: class band: def __init__(self, name, number): self.name = name self.number = number rivers = band("rivers", 1) patrick = band("pat" , 2) brian = band("brian" , 3) scott = band("scott", 4) 在这段代码中,有没有一种方法可以让我使用

有没有办法通过将对象与其属性匹配来获取对象? 例如:

class band:
    def __init__(self, name, number):
    self.name = name
    self.number = number


rivers = band("rivers", 1)
patrick = band("pat" , 2)
brian = band("brian" , 3)
scott = band("scott", 4)
在这段代码中,有没有一种方法可以让我使用一个数字(比如说1)来查找band类中的对象rivers并获取其name属性

感谢您花时间阅读本文,祝您度过愉快的一天

在这段代码中,有没有一种方法可以让我使用一个数字(比如说1)来查找band类中的对象rivers并获取其name属性

在这段代码中,不是。因为您没有将
name
的值保存到class属性中

但是,如果您的类结构是:

class band:
    def __init__(self, name, number):
        self.number = number
        self.name = name   # <--- Here is the difference
迭代列表并将
编号
值为
1
的类的
名称
打印为:

for item in my_list:
    if item.number == 1:
        print item.name 
在这段代码中,有没有一种方法可以让我使用一个数字(比如说1)来查找band类中的对象rivers并获取其name属性

在这段代码中,不是。因为您没有将
name
的值保存到class属性中

但是,如果您的类结构是:

class band:
    def __init__(self, name, number):
        self.number = number
        self.name = name   # <--- Here is the difference
迭代列表并将
编号
值为
1
的类的
名称
打印为:

for item in my_list:
    if item.number == 1:
        print item.name 

为了实现这一点,您可以将字典映射号存储到频带

比如说

bands = {}

class band:
   def __init__(self, name, number):
      self.number = number
      self.name = name
      bands[number] = self

def getBandFromNumber(number):
   return bands[number]

为了实现这一点,您可以将字典映射号存储到频带

比如说

bands = {}

class band:
   def __init__(self, name, number):
      self.number = number
      self.name = name
      bands[number] = self

def getBandFromNumber(number):
   return bands[number]

从类中-你是指在类或其他东西中?是的,我的意思是。修复类中的缩进-你是指在类或其他东西中?是的,我的意思是。修复缩进好的,我将在我目前正在进行的项目中尝试这种方式。哇,刚刚意识到我忘记添加self.name=name,我会编辑它,我会在我目前正在做的项目中这样做。哎呀,刚刚意识到我忘了添加self.name=name,我会编辑inIt,将
bands
作为类变量添加到band类中会更好。将
bands
作为类变量添加到band类中会更好