python类属性、类方法、静态方法
一. 类属性
1. 类属性
类属性就是 类 所拥有的属性,它被 该类的所有实例对象 所共有。
类属性可以使用 类或 实例对象访问。
说明:
1. 记录的某项数据 始终保持一致时,则定义类属性。
2. 实例属性要求 每个对象为其 单独开辟一份内存空间 来记录数据,而 类属性 为全类所共有 ,仅占用一份内存,更加节省内存空间。
2. 类属性的设置
class Dog(object): tooth = 10 dog = Dog() print(Dog.tooth) #类直接调用 print(dog.tooth) #实例调用
说明:
类属性类似于java的静态变量
3. 类属性的修改
类属性的修改只能通过类修改,不能通过类的实例对象修改
class Dog(object): tooth = 10 dog = Dog() Dog.tooth = 20 print(Dog.tooth) # 20 print(dog.tooth) # 20 dog.tooth = 30 print(Dog.tooth) # 20 print(dog.tooth) # 30
说明:
上面 dog.tooth = 30 并没有修改类属性tooth,而是创建了一个与类属性tooth同名的实例属性
二. 类方法
用装饰器`@classmethod`来标识的方法为类方法,对于类方法,第一个参数必须是类,一般以`cls`作为第一个参数。
class Dog(object): tooth = 10 @classmethod def class_fn(cls): return cls.tooth dog = Dog() print(Dog.class_fn()) # 10 # 类直接调用类方法 print(dog.class_fn()) # 10 # 类的对象调用类方法
说明:
- 参数cls代表当前类,调用方法时自动传入
- 注意:类方法也是可以继承的,即类方法不只是定义它的类可以调用,子类通过子类名也可以调用,此时的cls参数为调用它的子类
三. 静态方法
通过装饰器`@staticmethod`来进行修饰,静态方法既不需要传递类也不需要传递实例对象作为参数(形参没有self/cls)**。
静态方法 也能够通过 实例对象 和 类去访问。
class Dog(object): tooth = 10 @staticmethod def static_fn(): return "静态方法" dog = Dog() print(Dog.static_fn()) # 静态方法 # 类直接调用静态方法 print(dog.static_fn()) # 静态方法 # 类的对象调用静态方法
说明:
静态对象中无法访问类属性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2018-12-26 threadLocal