具有多个属性的Python类
我想创建一个有很多属性的类(大约有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)
这样做的一个好处是,你可以随意改变传入值的顺序。
而且你根本不需要修改类的定义。