结论
1.类变量的地址指向是不会变的,即便通过实例化对象修改,但是类变量的地址指向是不会变的。
2.类变量的地址指向是不会变的,但是类变量的值是可以变的。比如某个类变量是列表,那么通过实例化对象修改列表的值,类变量的值也会改变。
CODE
class GuoJia:
name = None
class ChinesePeople:
guojia = GuoJia()
name = "XiaoMing"
friend = ["XiaoHong", "XiaoHuang"]
sex = None
def __init__(self) -> None:
pass
def test01():
print("*"*10, "test01","*"*10)
cp1 = ChinesePeople()
cp1.name = "XiaoHong"
cp1.guojia.name = "China"
cp1.friend.append("XiaoLi")
cp1.sex = "man"
print("guojia_name: {}".format(cp1.guojia.name))
print("guojia_name_id: {}".format(id(cp1.guojia.name)))
print("peole_name: {}".format(cp1.name))
print("peole_name_id: {}".format(id(cp1.name)))
print("peole_friend: {}".format(cp1.friend))
print("peole_friend_id: {}".format(id(cp1.friend)))
print("peole_sex: {}".format(cp1.sex))
print("peole_sex_id: {}".format(id(cp1.sex)))
def test02():
print("*"*10, "test02","*"*10)
cp2 = ChinesePeople()
print("guojia_name: {}".format(cp2.guojia.name))
print("guojia_name_id: {}".format(id(cp2.guojia.name)))
print("peole_name: {}".format(cp2.name))
print("peole_name_id: {}".format(id(cp2.name)))
print("peole_friend: {}".format(cp2.friend))
print("peole_friend_id: {}".format(id(cp2.friend)))
print("peole_sex: {}".format(cp2.sex))
print("peole_sex_id: {}".format(id(cp2.sex)))
def test03():
print("*"*10, "test03","*"*10)
print("guojia_name: {}".format(ChinesePeople.guojia.name))
print("guojia_name_id: {}".format(id(ChinesePeople.guojia.name)))
print("peole_name: {}".format(ChinesePeople.name))
print("peole_name_id: {}".format(id(ChinesePeople.name)))
print("peole_friend: {}".format(ChinesePeople.friend))
print("peole_friend_id: {}".format(id(ChinesePeople.friend)))
print("peole_sex: {}".format(ChinesePeople.sex))
print("peole_sex_id: {}".format(id(ChinesePeople.sex)))
def test00():
print("*"*10, "test00","*"*10)
print("guojia_name: {}".format(ChinesePeople.guojia.name))
print("guojia_name_id: {}".format(id(ChinesePeople.guojia.name)))
print("peole_name: {}".format(ChinesePeople.name))
print("peole_name_id: {}".format(id(ChinesePeople.name)))
print("peole_friend: {}".format(ChinesePeople.friend))
print("peole_friend_id: {}".format(id(ChinesePeople.friend)))
print("peole_sex: {}".format(ChinesePeople.sex))
print("peole_sex_id: {}".format(id(ChinesePeople.sex)))
def test05():
print("*"*10, "test05","*"*10)
cp5 = ChinesePeople()
cp5.friend = ["XiaoLi", "XiaoHuang"]
print("peole_friend: {}".format(cp5.friend))
print("peole_friend_id: {}".format(id(cp5.friend)))
def jielun():
print("*"*10, "jielun","*"*10)
print("""
1.类变量的地址指向是不会变的,即便通过实例化对象修改,但是类变量的地址指向是不会变的。
2.类变量的地址指向是不会变的,但是类变量的值是可以变的。比如某个类变量是列表,那么通过实例化对象修改列表的值,类变量的值也会改变。
""")
if __name__ == "__main__":
test00()
test01()
test02()
test05()
test03()
jielun()