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