将wx从类传递给函数是好是坏?

问题描述 投票:1回答:1

我对OOP还是很陌生,所以这可能是一个非常愚蠢的问题。

我有很多类,它们都使用通用对话框来执行简单的“获取文件”,这在我的实用程序模块中。将wx传递给该函数是一种不好的做法,因此我不必在utils.py文件的顶部放置“ import wx”?

此刻,我通过单击按钮并传递默认路径来调用例程,但这意味着我必须在utils.py和test.py中都具有“ import wx”

test.py

import utils, wx

#... Lots of wx stuff happens here

f = utils.get_file(self, def_path)

#... Lots more wx stuff happens here

utils.py

import wx

def get_file(self,defaultPath):
    newFile = ''
    with wx.FileDialog(self, "Select sound file",
                       style=wx.FD_OPEN, defaultDir=defaultPath) as fileDialog:
        if fileDialog.ShowModal() == wx.ID_CANCEL:
            return newFile    # the user changed their mind

    # Proceed loading the file chosen by the user
    newDir = fileDialog.GetDirectory()
    if newDir == defaultPath:
        newFile = fileDialog.GetFilename()
    else:
        newFile = fileDialog.GetPath()
    return newFile

因此,将通话更改为f = utils.get_file(self, wx, def_path)和功能def get_file(self, wx, defaultPath):这使我可以从utils.py中删除“ import wx”

python wxpython parameter-passing
1个回答
0
投票

将您的函数解耦到不同的文件中比较干净。这样,您只处理返回值。假设以下两个文件位于同一文件夹中:

file_one.py

import random

def get_a_number():
    return random.randint(0, 101)

file_two.py

from file_one import get_a_number

def multiply_random_number(random_number, multiple):
    print(random_number * multiple)

multiply_random_number(get_a_number(), 4)

注意我如何不在file_two中再次随机导入。我只给我调用的函数file_one中的第一个位置参数,这是它的返回值。

© www.soinside.com 2019 - 2024. All rights reserved.