Python_面向对象:类属性

一、概念

类属性是属于类的变量,它是在类中定义的变量,而不是在实例方法中定义的变量。
类属性可以被所有类的实例访问和修改,在所有类的实例中共享。简单来说,类属性可以看成是作用域在类内部的变量。

二、代码演示

示例需求:
  • 定义一个工具类
  • 每件工具都有自己的name
  • 需求--知道使用这个工具类创建了多少个工具对象
class Tool(object):

    # 类属性
    count = 0
    # 私有类属性
    __c = 0

    def __init__(self, name):
        self.name = name

        # 在内部,通过 类名.类属性 的方式调用所有类属性。
        # 注意:可以通过self.类属性访问变量,但是不能通过self.类属性去赋值,该操作相当于为实例创建了个与类属性同名的实例属性
        # 每次实例化,修改类属性的值
        Tool.count += 1
        Tool.__c += 2


tool1 = Tool("钳子")
tool2 = Tool("扳手")
tool3 = Tool("改刀")

# 在外部,通过 类名.类属性 的方式能调用公有类属性,不能调用私有类属性比如类属性:__c
print(Tool.count)   # 输出:3,是因为实例化了3次

# 实例也能访问公有类属性
print(tool3.count)  # 输出:3

# 共有类属性可以被外部修改,类属性修改后,所有实例访问类属性都是修改后的值
Tool.count = 666
print(tool3.count)  # 输出:666

# 注意:修改类属性值不能通过实例去修改。那样操作相当于为实例创建了个与类属性同名的实例属性,并没有修改类属性值
tool2.count = 222
print(tool3.count)  # 输出:666 通过实例tool2修改count值,通过实例tool3去调用,可以验证上述所说
print(tool2.count)  # 输出:222

 

 

posted @ 2019-10-24 15:57  码上测  阅读(207)  评论(0编辑  收藏  举报