在Python 2.7中定义类时,将变量提供给init()函数,然后使用例如self.x
class NewClass(object):
def __init__(self, x, y):
self.x = x
self.y = y
如果使用大量变量,是否有办法简化此过程,即不必明确定义每个实例变量?
或者是否有明确定义它们的充分理由?
答案 0 :(得分:2)
>>> from collections import namedtuple
>>> NewClass = namedtuple('NewClass', 'x y')
>>> obj = NewClass(x=10, y=14)
>>> obj
NewClass(x=10, y=14)
答案 1 :(得分:0)
class NewClass(object):
def __init__(self, **kwargs):
self.validate(kwargs) # optional
self.__dict__.update(kwargs)
但整个想法有点臭
您还可以使用带有可接受kwargs
密钥的静态集,validate
会检查传递kwargs
是否包含该集合的子集
答案 2 :(得分:0)
您可以使用__dict__
:
class NewClass:
def __init__(self, *args):
self.headers = ["var{}".format(i+1) for i in range(len(args))]#optional, can use an list of variable names you are expecting
for a, b in zip(self.headers, args):
self.__dict__[a] = b