2017-02-14 108 views
-2

在类B中使用变量我试图通过使用__init__()方法在class A中使用class B中的变量。但不知何故class A和B中的变量无法显示(我的CVS写入文件没有改变)。这里是我的代码:使用A .__ init __()方法

class Welcome(object): 

    csv_name_sub = None 
    csv_name_ses = None 

    def __init__(self, master, csv_name_sub = None, csv_name_ses = None): 
     self.entrySub=Entry(self.master,bg="grey") 
     self.entrySes=Entry(self.master,bg="grey") 

     self.csv_name_sub = str(self.entrySub.get()) 
     self.csv_name_ses = str(self.entrySes.get()) 

    def writeToFile(self): 
     with open("/Users/Desktop/" + self.csv_name_sub+ '_' + self.csv_name_ses + '_subjectNo.csv', 
       'w') as resultFile: 
     resultFileWrite=.... 

class App(Welcome): 

    def __init__(self, master): 
     Welcome.__init__(self, master) #I'm using python 3.5 

     Welcome.csv_name_sub = str(self.entrySub.get()) 
     Welcome.csv_name_ses = str(self.entrySes.get()) 

     print('session is', Welcome.csv_name_ses) 
     print("subject is", Welcome.csv_name_sub) 

     self.resultFile = open("/Users/Desktop/" + Welcome.csv_name_sub + '_' + Welcome.csv_name_ses + '_results.csv', 'w') 

该程序可以无错运行,但csv_name_subcsv_name_ses是空的,当我在这两类打印出来。

+1

In P ython,空白很重要。你可以检查你的方法的格式/标签? –

+0

Thans为您提醒Rocket,只是改变了! – key

回答

2

更新的属性绑定到实例而不是超类。从self

class App(Welcome): 

    def __init__(self, master): 
     Welcome.__init__(self, master) # Updated attributes are bound to self 

     self.csv_name_sub = str(self.entrySub.get()) 
     self.csv_name_ses = str(self.entrySes.get()) 
     ... 
1

使用实例的属性,即:你应该使用self引用通过实例的属性

class App(Welcome): 

    def __init__(self, master): 
     super().__init__(master) #I'm using python 3. 

     print('session is', self.csv_name_ses) 
     print("subject is", self.csv_name_sub) 

工作例如:

class Entry(object): 

    def __init__(self, master, bg): 
     pass 

    def get(self): 
     return 42 


class Welcome(object): 

    def __init__(self, master): 
     self.master = master 
     self.entrySub = Entry(self.master, bg="grey") 
     self.entrySes = Entry(self.master, bg="grey") 

     self.csv_name_sub = str(self.entrySub.get()) 
     self.csv_name_ses = str(self.entrySes.get()) 

class App(Welcome): 

    def __init__(self, master): 
     super().__init__(master) 

     print('session is', self.csv_name_ses) 
     print("subject is", self.csv_name_sub) 


app = App('x') 

输出:

session is 42 
subject is 42 
+0

谢谢! Entry(欢迎课程)是一个tkinter入口小部件,这里输入的内容将在App类中打印。 'str(self.entrySub.get())'得到用户的输入。我试图将你的代码合并到我的。但仍然无法打印'self.csv_name_ses'。再次,程序运行正常,没有错误。你有什么想法,为什么?真的很感激它! – key

+0

也许'self.entrySub.get()'的结果返回一个空字符串。 –

相关问题