在python中实例化对象

2024-05-28 22:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要实例化的python类,__init__定义有很多参数(10+)。有没有一种干净的方法来实例化一个__init__需要很多参数的类?

例如:

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"....)

有更干净的方法吗?比如交字典什么的?或者更好,是否有一个预期的会议?


Tags: 实例方法selfan参数定义objectinit
3条回答

向构造函数传递太多参数是不好的。但如果你想这么做,试着:

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)

是的,您可以使用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教程的unpacking argument lists部分。

而且,//在Python中不是一个注释,它是floor division。#是一个注释。对于多行注释,'''You can use triple single quotes'''"""triple double quotes"""

Python中没有new关键字。就像调用函数一样调用类名。

可以使用字典指定关键字参数,方法是在字典前面加上**,例如:

options = {
    "param1": "foo",
    "param2": "bar",
    "param3": "baz"
}

my_a = A(**options)

如果您要同时定义所有值,那么使用字典并不能给您带来任何好处,而只是直接指定这些值,同时使用额外的空格来实现clairity:

my_a = A(
    param1 = "foo",
    param2 = "bar",
    param3 = "baz"
)

相关问题 更多 >

    热门问题