[英]How do i instantiate this inherited class
Ok this should be trivial, but i am stuck- the code is existing and should be fine. 好的,这应该是微不足道的,但是我被困住了,代码已经存在并且应该没问题。
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)
I can instantiate Connect easily 我可以轻松实例化Connect
local_connection=Connect(database, user, password, host, port)
How do I instantiate Process? 如何实例化流程?
If I do Process(database, user, password, host, port
) - Error is - TypeError: init () takes exactly 6 arguments (1 given) 如果我执行Process(database, user, password, host, port
)-错误是-TypeError: init ()恰好接受6个参数(给定1个)
If I do 如果我做
Process(local_connection)
Error is - TypeError: init () takes exactly 1 argument (2 given) 错误是-TypeError: init ()恰好接受1个参数(给定2个)
If i try 如果我尝试
Process()
Errorr is - TypeError: init () takes exactly 6 arguments (1 given) Errorr是-TypeError: init ()恰好接受6个参数(给定1个)
You can fix this in two ways: 您可以通过两种方式解决此问题:
create a Process
's object along with argument's name as: 创建一个Process
对象以及参数名称,如下所示:
>>> Process(database='database', user='user', password='password', host='host', port='port') <__main__.Process object at 0x7f4510150a10>
OR, Use *args
along with **kwargs
in Process.__init__()
as: 或者,在Process.__init__()
中将*args
和**kwargs
一起使用:
class Process(Connect): def __init__(self, *args, **kwargs): super(Process, self).__init__(*args, **kwargs)
and just pass param to __init__()
without arguments as: 并将参数不带参数传递给__init__()
:
>>> Process('database', 'user', 'password', 'host', 'port') <__main__.Process object at 0x7f4510150950>
Please also refer: What does ** (double star) and * (star) do for parameters? 另请参阅: **(双星)和*(星)对参数有何作用? for knowing the difference between *args
and **kwargs
. 了解*args
和**kwargs
之间的区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.