简体   繁体   English

我如何实例化此继承的类

[英]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: 您可以通过两种方式解决此问题:

  1. 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> 
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM