首页 > 编程语言 >深度之眼(十三)——Python:类-面向对象的编程

深度之眼(十三)——Python:类-面向对象的编程

时间:2022-12-12 16:03:45浏览次数:46  
标签:mileage Python self 面向对象 year model brand def 之眼


文章目录

  • ​​引子——类的引入​​
  • ​​7.1 类的定义​​
  • ​​7.1.1 类的命名​​
  • ​​7.1.2 类的属性​​
  • ​​7.1.3 类的方法​​
  • ​​7.2 创建实例​​
  • ​​7.2.1 实例的创建​​
  • ​​7.2.2 访问属性​​
  • ​​7.2.3 调用方法​​
  • ​​7.2.4 修改属性​​
  • ​​7.3 类的继承​​
  • ​​7.3.1 简单的继承​​
  • ​​7.3.2 给子类添加属性和方法​​
  • ​​7.3.3 重写父类的方法——多态​​
  • ​​7.3.4 用在类中的实例​​
  • ​​小结​​

引子——类的引入

可以看我之前写的文章:

​​嵌入式C++(二)​​

里面详细讲了类的相关概念

7.1 类的定义

三要素:类名、属性、方法

7.1.1 类的命名

首字母大写

深度之眼(十三)——Python:类-面向对象的编程_python


深度之眼(十三)——Python:类-面向对象的编程_python_02

7.1.2 类的属性

> # def _init_(self, 要传递的参数)  舒适化类的属性
class Car():
"""模拟汽车"""

def _init_(self, brand, model, year):
"""初始化汽车属性""" #相当于类内部的变量
self.brand = brand #汽车的品牌
self.model = model #汽车的型号
self.year = year #汽车的出厂年份
self.mileage = 0 #新车总里程初始化为0

7.1.3 类的方法

# 相当于类内部定义的函数

深度之眼(十三)——Python:类-面向对象的编程_父类_03

7.2 创建实例

7.2.1 实例的创建

将实例赋值给对象,实例化过程中,传入相应的参数
V=类名(必要的初始化参数)

my_new_car = Car("Audi", "A6", 2018)

7.2.2 访问属性

类名.属性名

print(my_new_car.brand)
print(my_new_car.model)
print(my_new_car.year)

7.2.3 调用方法

class Car():
"""模拟汽车"""

def __init__(self, brand, model, year):
"""初始化汽车属性""" #相当于类内部的变量
self.brand = brand #汽车的品牌
self.model = model #汽车的型号
self.year = year #汽车的出厂年份
self.mileage = 0 #新车总里程初始化为0

def get_main_information(self):
print("品牌:{} 型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))

def get_mileage(self):
return "汽车总里程:{}公里".format(self.mileage)

深度之眼(十三)——Python:类-面向对象的编程_python_04

7.2.4 修改属性

1、直接修改

深度之眼(十三)——Python:类-面向对象的编程_python_05


2.通过方法修改属性

class Car():
"""模拟汽车"""

def __init__(self, brand, model, year):
"""初始化汽车属性""" #相当于类内部的变量
self.brand = brand #汽车的品牌
self.model = model #汽车的型号
self.year = year #汽车的出厂年份
self.mileage = 0 #新车总里程初始化为0

def get_main_information(self):
print("品牌:{} 型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))

def get_mileage(self):
return "汽车总里程:{}公里".format(self.mileage)

def set_mileage(self, distance):
self.mileage = distance
my_old_car = Car("BBB","铃翎",2000)
print(my_old_car.get_mileage())
my_old_car.set_mileage(8000)
print(my_old_car.get_mileage())

深度之眼(十三)——Python:类-面向对象的编程_父类_06

3. 继续扩展

  • 禁止设置负里程
  • 将每次的里程数累加
class Car():
"""模拟汽车"""

def __init__(self, brand, model, year):
"""初始化汽车属性""" #相当于类内部的变量
self.brand = brand #汽车的品牌
self.model = model #汽车的型号
self.year = year #汽车的出厂年份
self.mileage = 0 #新车总里程初始化为0

def get_main_information(self):
print("品牌:{} 型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))

def get_mileage(self):
return "汽车总里程:{}公里".format(self.mileage)

def set_mileage(self, distance):
if distance > 0:
self.mileage = distance
else:
print("里程数不能为负!")

def increment_mileage(self, distance):
if distance > 0:
self.mileage += distance
else:
print("新增里程数不能为负!")

深度之眼(十三)——Python:类-面向对象的编程_python_07

7.3 类的继承

深度之眼(十三)——Python:类-面向对象的编程_python_08

深度之眼(十三)——Python:类-面向对象的编程_子类_09

7.3.1 简单的继承

父类

class Car():
"""模拟汽车"""

def __init__(self, brand, model, year):
"""初始化汽车属性""" #相当于类内部的变量
self.brand = brand #汽车的品牌
self.model = model #汽车的型号
self.year = year #汽车的出厂年份
self.mileage = 0 #新车总里程初始化为0

def get_main_information(self):
print("品牌:{} 型号: {} 出厂年份: {}".format(self.brand, self.model, self.year))

def get_mileage(self):
return "汽车总里程:{}公里".format(self.mileage)

def set_mileage(self, distance):
if distance > 0:
self.mileage = distance
else:
print("里程数不能为负!")

def increment_mileage(self, distance):
if distance > 0:
self.mileage += distance
else:
print("新增里程数不能为负!")

子类

class 子类名字(父类名):

* 新建一个电动汽车
class EletricCar(Car):
"""模拟电动汽车"""

def __init__(self, brand, model, year):
"""初始化电动汽车属性"""
super().__init__(brand, model, year) #声明继承父类的属性
my_new_electric_car = EletricCar("FFF","禹",2001)
my_new_electric_car.get_main_information()

深度之眼(十三)——Python:类-面向对象的编程_子类_10

7.3.2 给子类添加属性和方法

深度之眼(十三)——Python:类-面向对象的编程_父类_11

深度之眼(十三)——Python:类-面向对象的编程_开发语言_12

7.3.3 重写父类的方法——多态

深度之眼(十三)——Python:类-面向对象的编程_python_13

7.3.4 用在类中的实例

把电池抽象成一个对象

逻辑更加清晰

深度之眼(十三)——Python:类-面向对象的编程_父类_14


深度之眼(十三)——Python:类-面向对象的编程_python_15


深度之眼(十三)——Python:类-面向对象的编程_父类_16

小结

深度之眼(十三)——Python:类-面向对象的编程_父类_17

深度之眼(十三)——Python:类-面向对象的编程_子类_18


深度之眼(十三)——Python:类-面向对象的编程_父类_19


深度之眼(十三)——Python:类-面向对象的编程_初始化_20


标签:mileage,Python,self,面向对象,year,model,brand,def,之眼
From: https://blog.51cto.com/u_15909950/5930342

相关文章

  • 深度之眼(十四)——Python:文件、异常和模块
    文章目录​​零、导读​​​​8.1文件读写​​​​8.1.1文件的打开​​​​8.1.2文件的读取​​​​8.1.3文件的写入​​​​8.1.4既读又写​​​​8.1.5数据的存储与......
  • Python的输出print语句是否会显著降低运行速度?
    先说结论,会,并且运行时间是一般赋值语句的200倍左右,这个知乎回答是我昨天写的,内容是相同的。首先既然是探讨输出是否影响程序运行时间,那肯定就要控制是否输出作为唯一变化......
  • 【PyQt6】Python中QDateTime的常用方法总结
    前置QtDesigner里拖了一个QDateTimeEdit,设置时间格式为“yyyy/MM/ddHH:mm:ss”常用函数dt1=object1.dateTime()#object为QDateTimeEdit对象dt2=object2.dateTi......
  • 数据分析必备工具书:Python官方中文文档
    本文推荐数据分析的必备工具书:Python官方文档,注意,这是一份中文文档!(作者孙强)一、前言今天推荐一下Python官方文档,注意,这是一份中文文档!主题:可以说非常详细了,Python3.7全新变......
  • 常见数据结构与算法的Python实现
    有人问我数据结构与算法怎么学?怎么用Python实现常见的数据结构算法?我找到一个github标星66.6k+的仓库,把各种常见算法用Python实现了,而且还有动图演示,非常值得推荐。(黄海广)仓......
  • python3中requests库重定向获取URL
     importrequestsdefrequest_jd():url='http://jd.com/'#allow_redirects=False这里设置不允许跳转response=requests.get(url=url,allow_redirects=False......
  • TheFuck—Python写的超实用命令纠正工具
    哈喽兄弟们,我们在学习Python的过程中,有这么一款工具,可以轻松纠正我们写错的命令,简直太好用了~TheFuck是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令......
  • Python的入门学习Day 16~18——form”夜曲编程“
    Day16Day17time:2021.8.14.​今天七夕。激动,喜悦。平静呼吸,嘻嘻~也许我也是天空。去看课程了,嗯。今天重点学习了循环的对立面——”跳出循环“的操作。一如......
  • Python的入门学习Day 22~24——form”夜曲编程“
    Day22time:2021.8.19.​顺着歌曲的旋律,内心一下子就安静了呢。终于,我可以好好写日记了,徜徉在一片金色的花海里。今天主要学习了匿名函数。这是一种很有趣的函数......
  • Python的入门学习Day 19~21——form”夜曲编程“
    ..Day19time:2021.8.16.​很神奇地,编程和数学渐渐有了交集——今天学习了函数,连模样都像f(x)的形式。比较有区分度的是,在P里,“x"被称为”形式参数“,而所赋的......