首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中自动设置类成员变量

在Python中自动设置类成员变量
EN

Stack Overflow用户
提问于 2010-10-08 02:18:35
回答 2查看 20K关注 0票数 36

比方说,我在Python中有以下类

代码语言:javascript
复制
class Foo(object):
    a = None
    b = None
    c = None
    def __init__(self, a = None, b = None, c = None):
        self.a = a
        self.b = b
        self.c = c

有没有办法简化这个过程?每当我向类Foo添加一个新成员时,我都不得不修改构造函数。

EN

回答 2

Stack Overflow用户

发布于 2019-08-16 23:58:22

Python3.7提供了dataclasses,它在如下情况下很有帮助:

代码语言:javascript
复制
from dataclasses import dataclass


@dataclass
class Foo:
    a: str = None
    b: str = None
    c: str = None

当您只想存储几个属性时,这使您不必编写__init__方法。

为您提供了一个很好的__repr__方法:

代码语言:javascript
复制
>>> a = Foo()
>>> a
Foo(a=None, b=None, c=None)

如果你需要对参数进行计算,你可以实现__post_init__

另请参阅namedtuple:

代码语言:javascript
复制
from collections import namedtuple

Foo = namedtuple('Foo', ['a', 'b', 'c'])

不过,所有字段都需要使用namedtuple。

代码语言:javascript
复制
>>> a = Foo(1, 2, 3)
>>> a
Foo(a=1, b=2, c=3)
票数 14
EN

Stack Overflow用户

发布于 2010-10-08 02:21:50

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3884612

复制
相关文章

相似问题

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