首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用For循环初始化实例属性

使用For循环初始化实例属性
EN

Stack Overflow用户
提问于 2021-05-14 18:47:06
回答 1查看 46关注 0票数 0

所以我正在尝试编写一个python类,它接受四个参数,检查是否有任何参数为None。如果为none,则为self.parameter = 'None' else self.parameter = parameter

我正在写下面的代码片段。

代码语言:javascript
复制
class meta():
    def __init__(self, color, size, symbol, message):
        for a in [color, size, symbol, message]:
            if a == 'None':
                self.a = 'None'
            else:
                self.a = a

现在我知道这里的错误了,self.a被赋值为实例变量。但是我希望实例变量遍历self.color, self.size, self.symbol, self.message的值。

如何实现所需的功能?

EN

回答 1

Stack Overflow用户

发布于 2021-05-14 18:58:43

因为a是'None',所以if不是必需的。

因此,该函数简化为

代码语言:javascript
复制
class meta():
    def __init__(self, color, size, symbol, message):
        for a in [color, size, symbol, message]:
            self.a = a

接下来,您必须显式提供属性的名称:

代码语言:javascript
复制
class meta():
    def __init__(self, color, size, symbol, message):
        for name, value in [('color', color), ('size', size), ('symbol', symbol), ('message', message)]:
            setattr(self, name, value)

所以你不能用for循环来简化你的代码,它只会比简单的属性赋值更复杂:

代码语言:javascript
复制
class meta():
    def __init__(self, color, size, symbol, message):
        self.color = color
        self.size = size
        self.symbol = symbol
        self.message = message
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67533061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档