我是新来的ptyhon我正在尝试做一些非常简单的事情,但我不能这样做。
我必须创建每次都具有不同数量的属性的对象。例如:
OBJECT A
Attribute 1
Attribute 2
Attribute 3
OBJECT B
Attribute 1
Attribute 2
属性1将始终存在(具有不同的值,但对象中将至少有一个属性)。我创建了一个示例类:
class car():
def__init__(self, Color, **kwargs):
self.Color = Color
for key, value in kwargs.iteritems():
setattr(self, key, value)
所以现在我必须调用构造函数,但由于属性的数量是可变的,我应该怎么做?
CAR1_ATTRIBUTES = (Passengers = 5, Tires = 4)
CAR2_ATTRIBUTES = (DriverName = "John", Tires = 4, DoorsNumber = 5)
CAR3_ATTRIBUTES = (DriverName = "Tom", Velocimeter = "Y", DoorsNumber = 4)
CarsList = []
for i in range(0,3):
CarObject = Car("RED", RESTOFATTRIBUTES)
CarsList.append(CarObject)
“RESTOFATTRBUTES”将是可变的(它可以是一个参数或1563 ......)
答案 0 :(得分:0)
您可以传递任意数量的命名参数key = value
,例如
Car("RED", Passengers = 5, Tires = 4)
它们将被视为字典kwargs的key : value
对。或者直接传递字典:
RESTOFATTRIBUTES = {"Passengers": 5, "Tires": 4}
Car("RED", **RESTOFATTRIBUTES)
您不必使用**语法。您也可以使用*语法。您定义函数def Car(color, *args):
。在函数的主体中,args是一个元组,其中第一个元素对应于,例如,乘客,第二个元素对应于,例如,Tire等。您以这种方式调用Car
:
Car("RED", 5, 4)
或
RESTOFATTRIBUTES = (5, 4)
Car("RED", *RESTOFATTRIBUTES)
如果CAR功能的主体管理它,可能只有两个额外的属性。
这在某种程度上是重复的,但在这个问题的具体背景下提供答案并没有错。