具有多个属性的Python类

5 投票
4 回答
3110 浏览
提问于 2025-04-16 13:32

我想创建一个有很多属性的类(大约有10个)。有没有比下面这种方式更好看(更符合Python风格)来初始化这个类呢:

class myClass:
def __init__(self,atributeA,atributeB,atributeC)
   self.atributeA=atributeA
   self.atributeB=atributeB
   self.atributeC=atributeC

还有没有比下面这种方式更好的方法来创建类的实例呢?

thisInstance=myClass(valueA,valueB,valueC)

4 个回答

2

你可以用下面的代码来进行初始化。

def __init__(self, attributeA, attributeB, attributeC)
    vars(self).update(locals())
2

你也可以用一种不太正规的办法:

def __init__(self, *args, **kwargs):
    self.__dict__.update(kwargs)


d = {"attributeA": "a", "attributeB": "b"}
c = MyClass(**d)

不过要注意,如果字典里有和你类里重要属性同名的属性,那这个字典里的属性会把你类里的重要属性覆盖掉。

补充说明:如果你不太明白,我说的不太正规是指,除非你有非常好的理由,否则不要这样做,而且你的类不能被其他人滥用!

3

好吧,你可以使用关键字参数。这就像这样简单:

thisInstance=myClass(atributeA=valueA, atributeB=valueB, atributeC=valueC)

这样做的一个好处是,你可以随意改变传入值的顺序。

而且你根本不需要修改类的定义。

撰写回答