声明全局变量和方法之间的传递值 在Python OOP中。
因此,我想将nethod1的结果传递给 方法2。
例如
import pandas as pd
class ExampleClass(object):
def method1(self):
file_path="/some/path/"
file_data="populaion_data.csv"
data=pd.read_csv(file_path+file_data)
res = data.head(5)
def method2(self):
"""
In his method, i would like to do the following tasks
(1)read the "res" from the method1.
(2)want to get the value of "file_path" from method1 again.
"""
而且,我认为最好声明 “ file_path”值作为全局变量,因此我可以使用它 几种方法的价值。
答案 0 :(得分:1)
如果您希望变量可以在同一类的各个方法之间访问,则只需声明一个实例变量:
import pandas as pd
class ExampleClass(object):
def __init__(self):
self.file_path = "/some/path/"
self.res = ''
def method1(self):
file_data="populaion_data.csv"
data=pd.read_csv(self.file_path+file_data)
self.res = data.head(5)
def method2(self):
"""
In his method, i would like to do the following tasks
(1)read the "res" from the method1.
(2)want to get the value of "file_path" from method1 again.
"""
#self.file_path and self.res will be accessible here too.
print (self.file_path, self.res)
a = ExampleClass()
a.method2()
答案 1 :(得分:0)
您可以执行以下操作:
def method1(self):
self.file_path = "some/path/"
file_data = "population_data.csv"
data=pd.read_csv(file_path+file_data)
self.res = data.head(5)
def method2(self):
print(self.file_path, self.res)
请注意,但是必须在method1之后调用method2。您还可以从method1
调用method2
,然后使用如下值:
def method1(self):
file_path = "some/path/"
file_data = "population_data.csv"
data=pd.read_csv(file_path+file_data)
res = data.head(5)
return (file_path, res)
def method2(self):
file_path, res = self.method1()
您也可以将其定义为类变量或静态变量。 要将其定义为静态变量,只需执行以下操作:
class ExampleClass:
file_path = "some/path"
data=pd.read_csv(file_path+file_data)
res = data.head(5)
def method2(self):
print(self.file_path, self.res)
答案 2 :(得分:0)
这不是OOP问题。使用OOP,您可以操纵类定义的对象,从基本的角度来看,这些对象是 types 一个 type 具有 state (数据)和行为(称为方法的集成函数)的组件。因此,在OOP中没有全局变量。可以通过方法参数将数据提供给对象,并且处理结果应该由方法返回。
在此cas中,除非您需要前面答案中定义的对象,否则我看不到这些函数位于类内的原因。根据您的代码示例,这可以通过将数据作为参数传递的函数来解决:
import pandas as pd
DEFAULT_FILE_PATH ="/some/path/"
def method1(filename, file_path='/'):
data=pd.read_csv(file_path + file_data)
return data.head(5)
def method2(data, file_path='/'):
"""
In his method, i would like to do the following tasks
(1)read the "res" from the method1.
(2)want to get the value of "file_path" from method1 again.
"""
所以您知道file_path
是什么,您可以将其用作
method2(method1("populaion_data.csv", DEFAULT_FILE_PATH), DEFAULT_FILE_PATH)