2016-04-28 123 views
0

我试图访问我在Python中的另一个模块内的一个函数中创建的变量来绘制图表,但是Python无法找到它们。 继承人一些示例代码:调用另一个模块中的变量python

class1: 
    def method1 
     var1 = [] 
     var2 = [] 
    #Do something with var1 and var2 
     print var1 
     print var2 
     return var1,var2 

sample = class1() 
sample.method1 

这里是2类

from class1 import * 

class number2: 
    sample.method1() 

这并不如预期,并打印VAR1和VAR2,但我不能把内部类数VAR1或VAR2 2

修正编辑: 因为任何人有这个问题,我通过导入这个上面的第二类固定它

from Module1 import Class1,sample 

然后里面的Class2

 var1,var2 = smaple.method1() 
+0

这是你尝试的确切代码吗? – vmonteco

+1

当然不是。它充满了语法错误:缺少':',缩进,'类'关键字... – Francesco

回答

0

您发布的代码是完全在他的注释语法错误,弗朗切斯科·赛义德的。也许你可以粘贴正确的。

您不会从类中导入,而是从包或模块中导入。另外,除非是callable,否则不要“调用”变量。

你的情况,你可以只是有:

file1.py:

class class1: 
    def __init__(self): # In your class's code, self is the current instance (= this for othe languages, it's always the first parameter.) 
     self.var = 0 

    def method1(self): 
     print(self.var) 

sample = class1() 

file2.py:

from file1 import class1, sample 

class class2(class1): 
    def method2(self): 
     self.var += 1 
     print(self.var) 

v = class2()   # create an instance of class2 that inherits from class1 
v.method1()   # calls method inherited from class1 that prints the var instance variable 
sample.method1()  # same 
print(v.var)   # You can also access it from outside the class definition. 
v.var += 2   # You also can modify it. 
print(v.var) 
v.method2()   # Increment the variable, then print it. 
v.method2()   # same. 
sample.method1()  # Print var from sample. 
#sample.method2() <--- not possible because sample is an instance of class1 and not of class2 

注意,有method1()class2class2必须从class1继承。但是你仍然可以从其他软件包/模块导入变量。

还要注意,var对于该类的每个实例都是唯一的。

+0

感谢您的评论,但我如何访问var1和var2从这个 – javasaucebiner

+0

@javasaucebiner像一个正常的函数unles你想这个变量是相关的到实例或类。也许你可以更精确地知道你想要什么。你真的尝试了什么,它怎么没有工作? – vmonteco

+0

我想绘制一个matplotlib图,使用在class1中创建的var1和var2列表 – javasaucebiner

相关问题