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
答案 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
在此示例中,可以使用类似的类来访问变量c
和d
print(Test.c)
并显示“ 3 ”
类变量也可以从其实例中访问
object = Test()
print(object.c) # --> 3
我希望这个答案对您有所帮助。祝你有美好的一天