Skip to main content
 首页 » 编程设计

python之如何在 Python 的不同类中使用变量

2025年05月04日24softidea

这是我的代码:

class ProjectApp(tk.Tk):   
 
    def __init__(self, *args, **kwargs): 
        tk.Tk.__init__(self, *args, **kwargs) 
 
        self.filepaths = [] 
 
class StartPage(tk.Frame): 
 
    def __init__(self, parent, controller, *args, **kwargs): 
        tk.Frame.__init__(self, parent, *args, **kwargs) 
        self.controller = controller 
        self.parent = parent 
 
    def get_file(self): 
 
        filepath = askopenfilename() 
 
        if filepath: 
            print(ProjectApp.filepaths) 
            self.parent.filepaths.append(filepath) 

我正尝试在另一个类中使用文件路径,但出现以下错误。

AttributeError: type object 'ProjectApp' has no attribute 'filepaths' 

能告诉我错在哪里吗?

请您参考如下方法:

这取决于你想要什么。对象有两种属性: 类属性和实例属性。

类属性

类属性对于类的每个实例都是相同的对象。

class MyClass: 
    class_attribute = [] 

这里 MyClass.class_attribute 已经为类定义,您可以使用它。如果您创建 MyClass 的实例,每个实例都可以访问相同的 class_attribute。

实例属性

实例属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。您只能在一个实例上使用它们。在方法__init__中有定义。

class MyClass: 
    def __init__(self) 
        self.instance-attribute = [] 

在您的情况下,filepaths 被定义为实例属性。 您可以为此更改您的类(class),您的 print(ProjectApp.filepaths) 将起作用。

class ProjectApp(tk.Tk):   
    filepaths = [] 
 
    def __init__(self, *args, **kwargs): 
        tk.Tk.__init__(self, *args, **kwargs) 

如果您需要更多解释,我建议您阅读 this python文档的一部分