# 9 第九节 类 # 好,我猜读者的第一个灵魂拷问就是:类是什么? # 顾名思义,类就是具有相同特征的东西的集合。 # 比如手机,他有很多种类,但是都可以打电话,听音乐,玩游戏... # 那我们就把能实现这些功能的电子产品统一称为手机。 # 这就是一个类。 # 第二个灵魂拷问,我们为什么要创建类这个概念? # 当我们告诉Python这个东西属于我们定义好的一个类时, # Python就会自动将所有相关的属性赋予这个东西。 # 这样可以极大的简化我们的代码。 # 1> 创建一个简单的类 # 在命名上,首字母需要大写。 # 后面的括号就说明我们是从一个空白类开始编写的。 class Dog(): ‘‘‘简单的小狗类‘‘‘ def __init__(self,name,age): # 这里只用写个性的特征。 ‘‘‘在这里写下小狗拥有的东西‘‘‘ self.name = name self.age = age def sit(self): ‘‘‘我们可以命令小狗坐下‘‘‘ print(self.name.title() + ‘现在已经坐下啦!‘) def roll_over(self): ‘‘‘我们命令小狗打滚‘‘‘ print(self.name.title() + ‘现在正在打滚!‘) # 上面就包含了类的基本结构。 # init是初始化部分,也就是说所有的小狗都有要名字和年龄。 # sit和roll_over是我们给予小狗的动作。 # 下面我们看下怎么用。 my_dog = Dog(‘huanhuan‘,5) print(‘我小狗的名字是‘ + my_dog.name.title() + ‘. ‘) print(‘我的小狗今年‘ + str(my_dog.age) +‘岁了。 ‘) my_dog.sit() my_dog.roll_over() # 输出结果如下: # 我小狗的名字是Huanhuan. # 我的小狗今年5岁了。 # Huanhuan现在已经坐下啦! # Huanhuan现在正在打滚! # 2> 一个更具体的例子 class Car(): ‘‘‘小汽车的类‘‘‘ def __init__(self,make,model,year): ‘‘‘初始化小汽车的属性‘‘‘ self.make = make self.model = model self.year = year self.odomter_reading = 0 # 设置一个有默认值的参数。 def get_descriptive_name(self): ‘‘‘关于小汽车的介绍‘‘‘ long_name =str(‘品牌:‘ + self.make + ‘\n型号:‘ + self.model + ‘\n生产年份:‘ + str(self.year) ) return long_name def read_odometer(self): ‘‘‘读取汽车里程数‘‘‘ print(‘这台小汽车开了‘ + str(self.odomter_reading) + ‘公里。‘) def increment_odometer(self,mileage): ‘‘‘ 更新里程数据,这里要填写里程的增加值。 并设置防止恶意回拨机制。 ‘‘‘ if mileage >= 0: self.odomter_reading += mileage else: print(‘里程数不能为负,请重新输入!‘) my_car = Car(‘大众‘,‘朗逸‘,2016) # 传入一辆车的信息。 print(my_car.get_descriptive_name()) # 打印汽车基本信息。 # 品牌:大众 # 型号:朗逸 # 生产年份:2016 my_car.read_odometer() # 打印里程信息。 # 这台小汽车开了0公里。 my_car.increment_odometer(23) # 小汽车的历程增加了23公里。 my_car.read_odometer() # 再次尝试打印。 # 这台小汽车开了23公里。 # 3> 子类 # 这是大类的一个细分类。子类包含一些特有的特征。 # 下面我们就建立一个汽车的子类,电动汽车。 class ElectricCar(Car): # 括号里注明父类 ‘‘‘电动车特有的特征‘‘‘ def __init__(self,make,model,year): ‘‘‘继承父类的基本信息,并添加特有信息‘‘‘ super().__init__(make,model,year) self.battery_size = 70 def describe_battery(self): ‘‘‘打印电瓶信息‘‘‘ print(‘电车的电池容量为:‘ + str(self.battery_size) + ‘千瓦时。‘) my_tesla = ElectricCar(‘特斯拉‘,‘model_Y‘,2021) print(my_tesla.get_descriptive_name()) # 打印电动车基本信息。 # 品牌:特斯拉 # 型号:model_Y # 生产年份:2021 my_tesla.describe_battery() #打印电动车特有属性。 # 电车的电池容量为:70千瓦时。 # 4> 使类变的更简洁的方法 # 当我们发现描述电动车电池的特征越来越多的时候,为了使类看的更加简洁。 # 我们可以把电池单独建立类,再把电池作为电动车的一个初始属性。 class Battery(): ‘‘‘关于电池的信息‘‘‘ def __init__(self,battery_size=70): self.battery_size = battery_size def describe_battery(self): ‘‘‘打印电瓶信息‘‘‘ print(‘电车的电池容量为:‘ + str(self.battery_size) + ‘千瓦时。‘) class ElectricCar1(Car): # 括号里注明父类 ‘‘‘电动车特有的特征‘‘‘ def __init__(self,make,model,year): ‘‘‘继承父类的基本信息,并添加特有信息‘‘‘ super().__init__(make,model,year) self.battery = Battery() my_tesla2 = ElectricCar1(‘特斯拉‘,‘model_X‘,2020) my_tesla2.battery.describe_battery() # 输出与之前一样:电车的电池容量为:70千瓦时。 #最后说一下 我们常用的导入库的方法是: # import (所要导入库的文件名) as (简写,一般要记住通用写法) # 如本节例子。假设我们这个文件名叫car。 # import car as ca # 如果想调用库里的类,以及制定函数,就可以这么做。 # dd = ca.Car(‘xxx‘,‘xx‘,2020) # dd.read_odometer() # 到目前为止,我们python的级初阶课程就全部介绍完毕了。
原文:https://www.cnblogs.com/HTY-AIpy/p/14374163.html