类属性相关操作

前言:很多同学在学习类和对象的时候,对类属性一直不理解,内部访问外部访问就给绕晕了,属性的修改更是云里雾里,今天我们就来讲一下,希望这篇博客对大家有帮助。

一、类属性的定义

  1. 定义在类中且在方法外的变量,称之为类属性。
    class TestDemo:
            # 此处的name这个变量就叫类属性
    	name = "老王"
    

二、类属性的访问

  1. 类属性的访问分为:类内部访问、类外部访问
  2. 类内部访问
    class TestDemo:
        # 此处的name这个变量就叫类属性
        name = "老王"
    
        def test_01(self):
            # 在类内部对类属性进行访问
            print(self.name)
    
    if __name__ == '__main__':
        cl = TestDemo() # 类实例化
        cl.test_01() # 调用test_01方法
    输出:
    老王
    
  3. 类外部访问
    class TestDemo:
        # 此处的name这个变量就叫类属性
        name = "老王"
    
    if __name__ == '__main__':
        cl = TestDemo() # 类实例化
        result = cl.name  # 通过类实例访问类属性
        print("类实例访问类属性 =",result)
    
        result2=TestDemo.name # 通过类访问类属性
        print("类访问类属性 =", result2)
    输出:
    类实例访问类属性 = 老王
    类访问类属性 = 老王
    

三、类属性的修改

  1. 类属性为不可变类型
    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
    修改后类属性: 小黑
    
    结论:当类属性为不可变类型时,对类属性进行修改,实际上只是改变了类属性的引用地址,并未对齐进行修改
    
  2. 类属性为可变类型
    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
    修改后类属性: ['大黄', '小黑']
    
    结论:当类属性为可变类型时,可以对类属性进行修改
    
2 回帖
请输入回帖内容 ...