当前位置: 首页 > news >正文

【Python编程】之面向对象

目录

一、面向对象基本概念

1.1、类的定义

1.2、类的实例化

1.3、类的基本结构

1.4、类的命名

1.5、对象、类的相关操作

二、面向对象三大特征

2.1、封装

2.2、继承

2.2.1、单继承

2.2.2、多继承

2.3多态

一、面向对象基本概念

  • 类:用几大特征表述一一类事物。类要表达的是一个抽象的概念。

  • 对象:对象是类的具体实现。举个例子,类像是一张图纸,对象是由这张图纸产出的具体物品。类只有一个,但是对象可以同这个类实例出多个。

对象是类的实例,类是对象的模板。

类中的成员只有属性和方法,不要裸露地把判断和循环写在类中,而要用方法包起来。

1.1、类的定义

class Car:
    pass
    
#推荐使用下面定义方式
class Car():
    pass

class Car(object):
    pass

1.2、类的实例化

class Car():
    pass

#类的实例化,实例化对象,new新对象
obj = Car()

1.3、类的基本结构

#类中只有成员属性和成员方法
class Car():
    color="咖啡色"        #成员属性
    def run(self):           #成员方法        (self)代表对象本身
        print("fast")

1.4、类的命名

类的命名推荐使用驼峰命名法,如:MyCar

1.5、对象、类的相关操作

1.5.1成员等级

python对成员的保护分为两个等级:

  1. 私有的(private):在本类内部可以访问,类的外部不可以访问。(python中属性或者方法前面加两个下划线"_"

  2. 公有的(public):在本类的内部和外部都可以访问

对象的语法:
    对象.属性
    对象.方法()

案例

公有成员

class Car:color = "red"logo = "BMW"def run(self):print("Car is running")
BMW = Car() 
print(BMW.color)
print(BMW.logo)
BMW.run()输出结果
red
BMW
Car is running

私有成员

class Car:color = "red"__logo = "BMW"def run(self):print("Car is running")输出结果
发生异常: AttributeError
'Car' object has no attribute '_logo'File "E:\VScode\python\demo02.py", line 9, in <module>print(BMW._logo)^^^^^^^^^
AttributeError: 'Car' object has no attribute '_logo'

公有方法、私有方法

class Car:color = "red"__logo = "BMW"logo=__logodef run(self):print("Car is running")def __info(self):print("This is a car")def info(self):self.__info()BMW = Car() 
print(BMW.color)
print(BMW.logo)
BMW.info()
BMW.run()输出结果
red
BMW
This is a car
Car is running

二、面向对象三大特征

2.1、封装

如上

2.2、继承

一个类继承另外一个类,那么该类就是子类(衍生类),被继承的这个类叫做父类(超类,基类)

继承:

(1)单继承 (2)多继承

python3中所有的类都默认继承父类object

2.2.1、单继承

(1)子父继承之后,子类可以调用父类的公有的属性和方法

(2)子父继承之后,子类不可以调用父类的私有成员

(3)子父继承之后,子类可以改写父类的方法

(4)子父继承之后,子类优先调用自己的成员属性方法,如果没有则调用父类的属性方法,如果都没有,直接报错

案例

class newCar(Car):passnewCar = newCar()
print(newCar.color)输出结果
red
class newCar(Car):def info(self):return "This is a new car" + " 颜色是" + self.color + " 品牌是" + self.logonewCar = newCar()
print(newCar.color)
print(newCar.info())    输出结果
red
This is a new car 颜色是red 品牌是BMW
2.2.2、多继承

super的用法:

(1)super本身是一个类,super()是一个对象,用于调用父类的绑定方法

(2)super()只应用在绑定方法中,默认自动传递self对象(前提:super所在作用域存在self)

(3)super用途:解决复杂的多继承调用关系

案例

class Father():property="抽烟喝酒"def f_hobby():print("喜欢抽烟喝酒")
class Mother():property="化妆品包包"def m_hobby(self):print("逛街买化妆品包包")
class Son(Father,Mother):property="打游戏看直播"#1.利用类来调用父类的属性和方法def skill1(self):Father.f_hobby()print(Mother.property)#2.利用对象调用父类的属性和方法#self在调用父类方法属性的时候,在本类有的时候,先调用自己的,如果没有,再调用父类的def skill2(self):self.m_hobby()#无,调用父类print(self.property)#有,调用自身#3.利用super调用父类的属性和方法#super()只调用父类的相关公有成员,不会调用自己本类中的公有成员,super()特指调用父类,跟self有区别def skill3(self):print(super().property)#多个父类,按顺序继承super().m_hobby()#只应用在绑定方法中son = Son()
son.skill1()
son.skill2()
son.skill3()        输出结果:
喜欢抽烟喝酒
化妆品包包
逛街买化妆品包包
打游戏看直播
抽烟喝酒
逛街买化妆品包包

self和super区别

当使用self调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。

2.3多态

概念:不同的子类对象,调用相同的父类方法,产生了不同的执行效果

关键字:继承改写

多态作用:在不改写父类代码的前提下,能实现不同的效果

http://www.dtcms.com/a/512472.html

相关文章:

  • Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
  • 【AI增强质量管理体系结构】AI+自动化测试引擎 与Coze
  • 音频共享耳机专利拆解:碰击惯性数据监测与阈值减速识别机制研究
  • 青岛专业网站设计公司网站后台程序怎么做
  • MySQL创建用户、权限分配以及添加、修改权限
  • 【循环神经网络基础】
  • 郑州网站建设与设计校园网站建设年度总结
  • 中国新冠一共死去的人数网站优化和提升网站排名怎么做
  • 太仓手机网站建设阿里云如何做网站
  • 第二篇:按键交互入门:STM32 GPIO输入与消抖处理
  • JSP九大内置对象
  • 如何选择大良网站建设网站建设插件代码大全
  • 卡码网语言基础课(Python) | 17.判断集合成员
  • 温州专业网站建设成都营销推广公司
  • 淘客做网站还是做app佛山seo网站优化
  • 组合数常见的四种计算方法
  • 美容医疗服务小程序:功能集成,解锁一站式变美新体验
  • 网站建设的展望 视频搭建公司内部网站
  • Mac 从零开始配置 VS Code + Claude/Codex AI 协同开发环境教程
  • 鸿蒙flutter 老项目到新项目的遇到迁移坑点
  • 网站开发z亿玛酷1专注响应式官网设计
  • SD comfy:教程3 - 音频生成
  • 百度网盘登录福建键seo排名
  • Xshell效率实战系列一:内置Xftp快速启动——从1分钟到10秒的传输革命
  • 公路建设网站自己编写网站
  • EN 13986:2004+A1:2015 人造板检测
  • 酒店网站html模板长沙微信网站建设
  • 天河建设网站技术网站备案号密码
  • 步进电机(200 smart DM542)调试文档
  • ubuntu22 docker安装ros1 noetic