前言:很多同学在学习类和对象的时候,对类属性一直不理解,内部访问外部访问就给绕晕了,属性的修改更是云里雾里,今天我们就来讲一下,希望这篇博客对大家有帮助。
一、类属性的定义
-
定义在类中且在方法外的变量,称之为类属性。
class TestDemo: # 此处的name这个变量就叫类属性 name = "老王"
二、类属性的访问
-
类属性的访问分为:类内部访问、类外部访问
-
类内部访问
class TestDemo: # 此处的name这个变量就叫类属性 name = "老王" def test_01(self): # 在类内部对类属性进行访问 print(self.name) if __name__ == '__main__': cl = TestDemo() # 类实例化 cl.test_01() # 调用test_01方法 输出: 老王
-
类外部访问
class TestDemo: # 此处的name这个变量就叫类属性 name = "老王" if __name__ == '__main__': cl = TestDemo() # 类实例化 result = cl.name # 通过类实例访问类属性 print("类实例访问类属性 =",result) result2=TestDemo.name # 通过类访问类属性 print("类访问类属性 =", result2) 输出: 类实例访问类属性 = 老王 类访问类属性 = 老王
三、类属性的修改
-
类属性为不可变类型
class Dog: # 类属性 dog_name = "大黄" print("原来dog_name内存地址:",id(dog_name)) if __name__ == '__main__': print("修改前类属性:",Dog.dog_name) Dog.dog_name='小黑' print("修改后dog_name内存地址:",id(Dog.dog_name)) print("修改后类属性:",Dog.dog_name) 输出: 原来dog_name内存地址: 4493585640 修改前类属性: 大黄 修改后dog_name内存地址: 4494022064 修改后类属性: 小黑 结论:当类属性为不可变类型时,对类属性进行修改,实际上只是改变了类属性的引用地址,并未对齐进行修改
-
类属性为可变类型
class Dog: # 类属性 dog_name = ["大黄"] print("原来dog_name内存地址:",id(dog_name)) if __name__ == '__main__': print("修改前类属性:",Dog.dog_name) Dog.dog_name.append('小黑') print("修改后dog_name内存地址:",id(Dog.dog_name)) print("修改后类属性:",Dog.dog_name) 输出: 原来dog_name内存地址: 4550404680 修改前类属性: ['大黄'] 修改后dog_name内存地址: 4550404680 修改后类属性: ['大黄', '小黑'] 结论:当类属性为可变类型时,可以对类属性进行修改
欢迎来到testingpai.com!
注册 关于