我如何实例化这个继承的类

时间:2016-11-07 20:15:19

标签: python class inheritance

好的,这应该是微不足道的,但我被卡住 - 代码存在,应该没问题。

 class Connect(object):
    def __init__(self, database, user, password, host, port):
        super(Connect, self).__init__()
        self.database = database
        self.user = user
        self.password = password
        self.host = host
        self.port = port

 class Process(Connect):
    def __init__(self, **kwargs):
        super(Process, self).__init__(**kwargs)

我可以轻松实例化

local_connection=Connect(database, user, password, host, port)

如何实例化Process?

如果我这样做 Process(database, user, password, host, port) - 错误是 - TypeError: init ()正好接受6个参数(给定1个)

如果我这样做

Process(local_connection) 

错误是 - TypeError: init ()只取1个参数(给定2个)

如果我尝试

Process()

错误是 - TypeError: init ()需要6个参数(给定1个)

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式解决此问题:

  1. 创建一个Process对象以及参数的名称:

    >>> Process(database='database', user='user', password='password', host='host', port='port')
    <__main__.Process object at 0x7f4510150a10>
    
  2. 或者,在*args中使用**kwargsProcess.__init__()作为:

    class Process(Connect):
        def __init__(self, *args, **kwargs):
            super(Process, self).__init__(*args, **kwargs)
    

    并将参数传递给__init__(),不带参数:

    >>> Process('database', 'user', 'password', 'host', 'port')
    <__main__.Process object at 0x7f4510150950>
    
  3. 请参阅:What does ** (double star) and * (star) do for parameters?了解*args**kwargs之间的区别。