python面向对象之多态,类属性,类方法,静态方法
2022/1/5 20:05:19
本文主要是介绍python面向对象之多态,类属性,类方法,静态方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
多态
类属性
类方法
静态方法
多态
多态可以实现通用的代码来适应需求的不断变化
步骤
1.定义父类提供公共方法,此方法可以不写任何代码,只是来规范子类去具体实现,就是重写
2.定义不同的子类,重写父类方法,具体实现
3.传递⼦类对象给调⽤者,可以看到不同⼦类执⾏效果不同
class Dog: def work(self): pass class ArmyDog(Dog): def work(self): print('追敌人') class DurgDog(Dog): def work(self): print('查毒品') class Person: def dog_work(self,dog): dog.work() p=Person() p.dog_work(ArmyDog()) p.dog_work(DurgDog()) ''' 追敌人 查毒品 '''
dog_work(self,dog) 传递dog而不是其他 就是因为多态,不管干什么的狗都是狗,都会工作,
至于让哪个狗去出击,还是人说的算
类属性
类属性是为了所有实例对象所共有而存在的,所以修改类属性不能通过实例对象而是类对象修改
每个实例对象都会单独创建单独的内存,而类属性仅占共享的一份空间
场景 某项数据不去改变的时候
class Dog: tooth=10 wangcai=Dog() xiaohei=Dog() print(Dog.tooth) print(wangcai.tooth) print(xiaohei.tooth) # 类属性 通过类直接调用或者对象去调用都可以获取 # 但是若去修改类属性必须使用类直接调用修改,不能是实例对象, # 因为类属性是对所有实例对象共有,一旦实力对象去修改, # 仅仅是该实例对象的类属性修改了 xiaohei.tooth=20 print(Dog.tooth) print(wangcai.tooth) print(xiaohei.tooth) # 10 # 10 # 10 # 10 # 10 # 20
类方法
装饰器@classmethod来标识
cls 第⼀个参数必须是类对象
场景 类⽅法⼀般和类属性配合使⽤ 作用访问类属性
class Dog: __tooth=10 @classmethod def get_tooth(cls): return cls.__tooth print(Dog.get_tooth())
静态方法
装饰器@staticmethod来进⾏修饰
静态⽅法既不需要传递类对象也不需要传递实例对象
静态⽅法 也能够通过 实例对象 和 类对象 去访问
场景
当⽅法中 既不需要使⽤实例对象(如实例对象,实例属性),也不需要使⽤类对象 (如类属性、类⽅法、创建实例等)时,定义静态⽅法取消不需要的参数传递,有利于 减少不必要的内存占⽤和性能消耗
说白了 就是静态方法定义场景就是该方法不涉及到类的所有属性方法等 虽然存在该类中,但与该类的其他的属性方法无关联
class Dog: @staticmethod def info(): print('静态方法') Dog.info() Dog().info()
这篇关于python面向对象之多态,类属性,类方法,静态方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程