在Python中看到以下行为我有点惊讶。没有被调用的类被打开并且它们的静态成员被读取是有原因的吗
测试\u.py
import unittest
from tests.family import Parent
class Test(unittest.TestCase):
def testParent(self):
bob = Parent()
if __name__ == "__main__":
unittest.main()
家庭.py
class Parent(object):
CONSTANT = "Constant belonging to Parent"
print("Parent {0}".format(CONSTANT))
def __init__(self):
print(">>__init_() Parent")
class Child(Parent):
CONSTANT = "Constant belonging to Child"
print("Child {0}".format(CONSTANT))
def __init__(self):
print(">>__init_() Child")
class Friend(object):
CONSTANT = "Constant belonging to Friend"
print("Friend {0}".format(CONSTANT))
def __init__(self):
print(">>__init_() Friend")
输出为:
父常量属于父常量
属于Child的Child常量
朋友永远属于朋友
\初始化\父
我找不到一个很好的参考来详细解释这个过程,但从我收集的资料来看:
导入时,类属性引用被添加到
对象(例如family.py)
假设您正在询问为什么静态类成员在类被实例化之前有值,这是因为类的静态成员基本上独立于类而存在。既然静态成员从定义上来说并没有绑定到实例,为什么它们需要一个实例才能存在呢
没有instances of ^{} 被实例化(
Parent()
)。但是,描述Parent
类的class object被实例化(class Parent
)。它将在处理过程中执行所有类对象初始化语句和方法定义相关问题 更多 >
编程相关推荐