如何从另一个模块中的模块访问类变量(python)?

时间:2020-09-12 11:00:02

标签: python-3.x windows pycharm

project_name
   |
    package1
       |__init__.py
       |
        package2
           |__init__.py
           |
            driver.py
           |
            package3
               |__init__.py
               |
                test.py
            

我已经尝试了很多次,但是我真的不明白我在这里犯了什么错误。 在这里需要您的指导。我正在学习python,请帮助我。 如上所述创建的项目(结构)。

test.py::已定义class Test并在此处定义了变量,如下所示。

test.py

class Test:
    def __init__(self):
    
        self.val1 = "value1"
        self.val2 = "value2"
    

driver.py:这是我将用于执行的驱动程序脚本。

python /package1/package2/driver.py
               or
cd project_name/package1/package2/
python driver.py

driver.py

from package1.package2.package3.test import Test   # All these values are populated

class Driver:
    def __init__(self):
        pass
        
    def fun1(self):
        print(Test.)   # I don't see any variables populating her after 'Test.'

在上面的代码段中,当我以from package1.package2.package3.test import Test的身份导入时,所有值都会自动填充。

在尝试print(Test.)时,它不会填充变量。 我做对了吗?如果有导入模块的更好方法,请帮助我理解。

Pycharm,Python 3.8,Windows 10

1 个答案:

答案 0 :(得分:0)

因为这些变量,您不会自动完成

self.val1 = "value1"
self.val2 = "value2"

您要访问的不属于Test类。相反,它们属于Test类的实例,因为它们仅在创建对象时声明(因为__init__(self)函数仅在创建对象时调用)

创建Test对象可让您访问这些变量

print(Test().val1)

将按照您的期望打印“ value1 ”。 但是,通常将创建的对象存储在变量中

my_object = Test()
print(my_object.val1)

一个类还可以具有在其所有实例(对象)之间共享的变量

class Test:

    c = 3
    d = 4

    def __init__(self):
        self.a = 0
        self.b = 2

在此示例中,可以使用类似的类来访问变量cd

print(Test.c)

并显示“ 3

类变量也可以从其实例中访问

object = Test()
print(object.c)  # --> 3

我希望这个答案对您有所帮助。祝你有美好的一天

相关问题