我知道如何遍历一个类的所有变量,但是如果我只想遍历其中的一些变量怎么办?
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/