我想获取load函数的路径和文件名,并将其传递给我的预测函数
每次我使用代码self.load()时,我还需要调用其参数,即路径和文件名。如何获取加载函数中的路径和文件名。
This is the screenshot of my problem
我尝试在预测函数中运行函数加载,但我需要参数[path]和[filename]
def load(self, path, filename):
with open(os.path.join(path, filename[0])) as stream:
self.ids.image.source = filename[0]
self.dismiss_popup()
pathh = (os.path.join(path,filename[0]))
return os.path.join(path,filename[0])
def predict(self):
#need to pass the path and filename here
答案 0 :(得分:1)
使用类属性
如果您将两个函数放在一个类中(使它们成为方法),您可以将path
和filename
设置为类属性
#!/usr/bin/env python3
class Foo:
def __init__(self):
self.path = ''
self.filename = ''
def load(self, path, filename):
self.path = path
self.filename = filename
def predict(self):
print(self.path)
print(self.filename)
foo_instance = Foo()
foo_instance.load('/test/path', 'a_file.txt')
foo_instance.predict()
预期结果:
>> '/test/path'
>> 'a_file.txt'
使用全局变量
如果您不想使用某个类,则可以使用global
关键字来修改范围高于该函数的变量。
例如:
#!/usr/bin/env python3
path_outer_scope = ''
filename_outer_scope = ''
def load(self, path, filename):
global path_outer_scope
global filename_outer_scope
path_outer_scope = path
filename_outer_scope = filename
def predict(self):
print(path_outer_scope)
print(filename_outer_scope)
load('/test/path', 'a_file.txt')
predict()
预期结果:
>> '/test/path'
>> 'a_file.txt'
如果您没有使用global
关键字,我希望看到
>> ''
>> ''
我应该使用哪个?
将这些功能放在一个类中是一个更干净的代码'因为变量仍然限于该类,并且不适用于不需要它们的函数。它们也在类中命名,因此名称冲突的可能性较小。
答案 1 :(得分:0)
您可以在函数顶部声明空字符串,并在调用load()
时指定值:
pth = ""
fname = ""
def load(self, path, filename):
pth = path
fname = filename
# your code here
def predict(self):
# use pth and fname here