好的,这应该是微不足道的,但我被卡住 - 代码存在,应该没问题。
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个)
答案 0 :(得分:1)
您可以通过两种方式解决此问题:
创建一个Process
对象以及参数的名称:
>>> Process(database='database', user='user', password='password', host='host', port='port')
<__main__.Process object at 0x7f4510150a10>
或者,在*args
中使用**kwargs
和Process.__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>
请参阅:What does ** (double star) and * (star) do for parameters?了解*args
和**kwargs
之间的区别。