如果某个参数不等于None,有没有一种方法可以让我在类中循环使用一个函数?我知道如何通过很多if循环来做到这一点,但是还有另一种方法可以做到这一点吗?
这是我想做的一个例子:
class Name:
def __init__(self,name,favfood,favcolour,favsport):
self.name = name
self.favfood = favfood
self.favcolour = favcolour
self.favsport = favsport
henry = Name("Henry","Sushi","Blue",None)
我想要一个打印出他所有喜欢的东西的函数,但是如果它是None,它将跳过它,这几乎是类的for循环。
是否可以为类中的每个属性创建一个forloop?
答案 0 :(得分:1)
您可以使用self
对象的__dict__
属性:
class Name:
def __init__(self,name,favfood,favcolour,favsport):
self.name = name
self.favfood = favfood
self.favcolour = favcolour
self.favsport = favsport
for key, value in self.__dict__.items():
if value is not None:
print('%s: %s' % (key, value))
henry = Name("Henry","Sushi","Blue",None)
这将输出:
name: Henry
favfood: Sushi
favcolour: Blue
答案 1 :(得分:0)
*已更新将使用__dict__
属性作为@blhsing建议
class Name:
def __init__(self,name,favfood,favcolour,favsport):
self.name = name
self.favfood = favfood
self.favcolour = favcolour
self.favsport = favsport
def print_favs(self):
'''even better using @blh method'''
[print(f'{k}: {v}') for k, v in self.__dict__.items() if v != None]
henry = Name("Henry","Sushi","Blue",None)
henry.print_favs()
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 helping.py name: Henry favfood: Sushi favcolour: Blue