How to pass an additional argument when creating an object that uses ** (double star) syntax in python?

How to pass the optional argument page_name"when creating the object NotebookPagebelow? I get the error message below:

class NotebookPage(wx.Panel):

    def __init__(self, *args, **kwargs):
        wx.Panel.__init__(self, *args, **kwargs)


NotebookPage(self, name='NotebookPage0', page_name=page)


TypeError: 'page_name' is an invalid keyword argument for this function

I need to pass an argument page_namewhen creating an object NotebookPage. But since page_nameit is not a valid argument wx.Panel, I get this error.

+4
source share
3 answers

You must remove the extra argument from kwargsbefore the call __init__. For example, using the method pop:

class NotebookPage(wx.Panel):
    def __init__(self, *args, **kwargs):
        page_name = kwargs.pop('page_name', None)
        wx.Panel.__init__(self, *args, **kwargs)
        if page_name:
            # somehow using page_name here
+7
source

Python 3.x kwarg , :

class NotebookPage(wx.Panel):
    def __init__(self, *args, page_name, **kwargs):
        wx.Panel.__init__(self, *args, **kwargs)
        print(page_name)

(2.x) Python , (*args).

+4

, , . , , . , __init__ *args / **kwargs, , __init__ arguments

class A:
    def __init__(self, x, y=None):
        pass


class B(A):
    def __init__(self, *args, **kwargs):
        page_num = kwargs.get('page_num')
        A.__init__(self, *args, **kwargs)

something = B(x=1, page_num=2)

something, B.__init__. B , . A.__init__ x=1, page_num=2. A.__init__ x, page_num. .

, undefined (*args **kwargs) kwargs.pop args.remove, kwargs.get args[<index>] __init__

+1

All Articles