【问题标题】:How to return multiple values from a python class to the calling class如何从python类返回多个值到调用类
【发布时间】:2019-10-30 12:37:26
【问题描述】:

被调用的python类返回的参数在调用类中是不可访问的。被调用类从文件中检索值并将它们返回给调用类。

被调用类 (XPGWGetParms) 创建一个字典以返回给调用类。

Class Main():
    def __init__(self, root, *args, *kwargs)
        self.root = root
        self.kwargs = {}

    def return_data(self):
        """

        :return:
        """
        self.kwargs = {
                    'text': self.text,
                    'codes': self.codes,
                    'darwin': self.darwin,
                    'windows': self.windows,
                    'linux': self.linux,
                    'raster_warning_level': self.raster_warning_level,
                    'padx': self.padx,
                    'pady': self.pady,
                    'win_background': self.win_background,
                    'screen_width': self.screen_width,
                    'screen_height': self.screen_height,
                    'char_width': self.char_width,
                    'progbar_maximum': self.progbar_maximum,
                    'window_app_name': self.window_app_name,
                    'default_font': self.default_font,
                    'next_step': self.next_step
                    }

        return self.kwargs

调用类

class Main(tk.Frame)
    def __init__(self, root, *args, **kwargs)
        tk.Frame.__init__(self, root, *args, **kwargs)        
        self.kwargs = {}
        self.text = {}
        self.codes = {}

        # Get text strings and parms
        self.kwargs = XPGWGetParms.Main(self, root, *args, **kwargs)

        self.text = self.kwargs['text']
        self.codes = self.kwargs['codes']

我希望调用类中的 self.text 由分配给键“text”的值填充,即 self.text。相反,根据调试器,我得到一个嵌套的 kwargs 值,即

 self={Main}.!main
     kwargs=Main<XPGWGetParms.Main...
         kwargs={dict}<class'dict>...
             'text'={dict}<class'dict>...
                 'APPNAME'={str}'Application Name'

我不知道我做错了什么,这可能很简单,但我无法解决。

【问题讨论】:

  • 不,您发布的代码将给出 TypeError,因为 self.kwargsXPGWGetParms.Main 的一个实例,并且该类没有定义 __getitem__

标签: python class return


【解决方案1】:

所以我没有使用 getitem 路线,所以我做了一些进一步的研究,这对我有用

self.instance_of_XPGWGetParms = XPGWGetParms.Main(self, root, *args, **kwargs)
self.kwargs = self.instance_of_XPGWGetParms.return_data()

我也不是很明白,但我正在努力。

非常感谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多