类属性的python循环?

2024-06-28 20:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如果一个类中的一个参数不等于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)

我想要一个能打印出他最喜欢的东西的函数,但是如果没有的话就跳过它,一个类的for循环。在

有没有办法让类中的每个属性都有一个forloop?在


Tags: 方法函数nameselfnone参数ifinit
2条回答

*更新后将使用@blhsing建议的__dict__属性

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

您可以使用self对象的^{}属性:

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)

该输出:

^{pr2}$

相关问题 更多 >