python 类属性

本文详细介绍了Python类属性的定义、访问和修改。类属性是定义在类外部的方法之外的变量,可以通过类内部和外部进行访问。在类内部访问类属性时,使用`self.name`;在类外部,可以通过类实例`cl.name`或直接通过类名`TestDemo.name`访问。对于不可变类型的类属性,如字符串,修改实际上是改变了引用地址;而对于可变类型,如列表,可以直接修改其内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、类属性的定义

  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
    修改后类属性: ['大黄', '小黑']
    
    结论:当类属性为可变类型时,可以对类属性进行修改
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值