在python中实例化对象
我想实例化一个python类,在python中实例化对象,python,Python,我想实例化一个python类,\uuuu init\uuu定义有很多参数(10+)。有没有一种干净的方法来实例化一个\uuuu init\uuuu需要很多参数的类 例如: class A(object): def __init__(self, param1, param2, param3,...param13): // create an instance of A my_a = new A(param1="foo", param2="bar", param3="hello
\uuuu init\uuu
定义有很多参数(10+)。有没有一种干净的方法来实例化一个\uuuu init\uuuu
需要很多参数的类
例如:
class A(object):
def __init__(self, param1, param2, param3,...param13):
// create an instance of A
my_a = new A(param1="foo", param2="bar", param3="hello"....)
options = {
"param1": "foo",
"param2": "bar",
"param3": "baz"
}
my_a = A(**options)
有没有更干净的方法?比如递字典什么的?或者更好,是否存在预期约定?是的,您可以使用
dict
来收集参数:
class A(object):
def __init__(self, param1, param2, param3):
print param1, param2, param3
params = {'param1': "foo", 'param2': "bar", 'param3': "hello"}
# no 'new' here, just call the class
my_a = A(**params)
请参阅Python教程的一节
另外,
/
在Python中不是注释,而是楼层划分#
是一个注释。对于多行注释,“您可以使用三个单引号”
或“三个双引号”
Python中没有新的
关键字。您只需像调用函数一样调用类名
您可以使用字典指定关键字参数,方法是在字典前面加上**
,例如:
class A(object):
def __init__(self, param1, param2, param3,...param13):
// create an instance of A
my_a = new A(param1="foo", param2="bar", param3="hello"....)
options = {
"param1": "foo",
"param2": "bar",
"param3": "baz"
}
my_a = A(**options)
如果要一次定义所有值,那么使用字典与直接指定值相比并没有任何优势,而使用额外的空白来表示clairity:
my_a = A(
param1 = "foo",
param2 = "bar",
param3 = "baz"
)
通常,拥有这么多参数通常是一个类太复杂的标志,应该拆分
如果这不适用,请向上传递字典或特殊参数对象。向构造函数传递太多参数是不好的。但如果您想这样做,请尝试:
class A(object):
def __init__(self, *args,**kwargs):
"""
provide list of parameters and documentation
"""
print *args, **kwargs
params = {'param1': "foo", 'param2': "bar", 'param3': "hello"}
a = A(**params)
为什么init有这么多参数?我真的希望你的参数不是这样命名的!您不应该将其称为
args
,Python中的惯例是将args
作为位置参数列表,而不是dict
@agf谢谢您的建议。我改变了它。关于一次定义所有参数——如果要在多个位置使用相同的参数,如果使用dict
,只需在代码中包含它们一次。