我知道如何遍历一个类的所有变量,但是如果我只想遍历其中的一些变量怎么办?

class MyClass:
    def __init__(self,var1,var2,var3,var4):
        self.var1 = "foo"
        self.var2 = "bar"
        self.var3 = "spam"
        self.var4 = "eggs"

items_to_loop = ("var2","var4")
for item in items_to_loop:
    print(item, MyClass.(item))


不起作用我该怎么做呢?

最佳答案

首先,您需要了解类和类实例(即对象)之间的区别。

在您的代码中,MyClass不包含名称为var1 .. var4的属性。但是,如果创建该类的实例,则该实例将包含这些属性。然后,您可以使用hasattr访问这些属性,以检查是否存在这样的属性,并使用getattr查找其值:

my_object = MyClass()
for attr_name in ('var1', 'var2'):
    if hasattr(my_object, attr_name):
       print  getattr(my_object, attr_name)


请注意,类本身也可以具有属性,但是它们被声明并且行为与实例属性不同:

 class MyClass(object):

      class_var1 = 'Hello'
      class_var2 = "Goodbye'

      def __init__(self, var1, var2):
           self.var1 = var1
           self.var2 = var2


现在,MyClass具有单例属性class_var1,class_var2,无论您创建了多少个MyClass类型的对象,它们都是相同的,而这些对象中的每个对象都将具有称为var1和var2的属性,并且每个实例的值可以不同。

关于python - 在Python中循环遍历类的某些变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22624601/

10-13 09:00