我需要创建一个带有很多参数的类。
class Line:
def __init__(self, name, nb = None, price_unit = None, total = None,
unit = None, time = None, session = None ):
每个属性都将获得与传递给 __ init __()的参数相同的名称和相同的值。
所以,我当然可以这样做:
class MyClass:
def __init__(self, name, nb = None, price_unit = None, total = None,
unit = None, time = None, session = None ):
self.name = name
self.nb = nb
self.price = price
self.price_unit = price_unit
self.total = total
self.unit = unit
self.time = time
self.session = session
但这是一个非常重的符号,对我来说似乎并不像是pythonic。你知道更多的pythonic方式吗?
答案 0 :(得分:8)
由于您将所有关键字参数的默认值设置为None
,因此您可以更具可读性:
class MyClass:
def __init__(self, name, **kwargs):
self.name = name
for attr in ('nb', 'price_unit', 'total', 'unit', 'time', 'session'):
setattr(self, attr, kwargs.get(attr))
但是,我认为您的初始方法也非常标准,尽管您可以通过删除参数与其默认值之间的空格来改进它。
class MyClass:
def __init__(self, name, nb=None, price_unit=None, total=None,
unit=None, time=None, session=None):
...
答案 1 :(得分:1)
以非常pythonic的方式,它可能是:
class MyClass:
def __init__(self, name, **kwargs):
self.name = name
self.__dict__.update(kwargs)
答案 2 :(得分:-1)
您可以使用* args即
def __init__(self, *args):
self.args = args