课本例子

dog.py

""""创建一个表示小狗的类dog"""
""""包含名字和年龄+蹲下和打滚"""
""""使用类去创建表示特定小狗的实例"""
"""创建DOG实例时,通过实参向Dog()传递名字和年龄,self会自动传递"""class Dog():""""一次模拟小狗的简单尝试"""def __init__(self,name,age): #三个形参self name age""""初始化属性name和age"""#以self为前缀的变量可以供类中的所有方法使用#获取存储在形参name中的值,并将其存储到变量name中,然后该变量被关联到当前创建的实例self.name = nameself.age = agedef sit(self):#sit()方法""""模拟小狗被命令时蹲下"""print(self.name.title() + " is now sitting.")def roll_over(self):#roll_over()方法""""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")my_dog = Dog('willie',6)#创建实例
print("My dog's name is "+ my_dog.name.title()+".")#访问实例属性,句点表示法
print("My dog is "+str(my_dog.age)+"years old.")#str(my_dog.age)将my_dog的属性age的值6转换为字符串my_dog.sit()#调用方法 实例名称+点+要调用的方法
my_dog.roll_over()your_dog = Dog('lucy',3)#创建多个实例
print("\nYour dog's name is "+ my_dog.name.title()+".")
print("Your dog is "+str(my_dog.age)+"years old.")your_dog.sit()
your_dog.roll_over()
========================================================
My dog's name is Willie.
My dog is 6years old.
Willie is now sitting.
Willie rolled over!Your dog's name is Willie.
Your dog is 6years old.
Lucy is now sitting.
Lucy rolled over!

car.py

""""给属性指定默认值"""
#odometer_reading ,属性,读出汽车的里程数,初始值为0
#read_odometer(),方法,获取到属性的值#创建一个表示汽车的类,存储有关汽车的信息,还有一个汇总这些信息的方法get_descriptive_nameclass Car():"""一次模拟汽车的简单尝试"""def __init__(self,make,model,year):#方法__int__()  self,make,model,year都为形参,形参self必不可少,且位于其他形参前#方法__int()__接受这些形参的值,并将它们存储在根据这个类创建的实例的属性中""""初始化描述汽车的属性"""self.make = make#以self为前缀的变量都可以供类中所有方法使用,可以通过类的任何实例来访问这些变量self.model = model#获取存储在形参model的值,并将其存储到变量model中,然后该变量被关联到当前创建的实例self.year = year"""给属性指定默认值"""self.odometer_reading = 0#创建一个odometer的属性,并将它的初始值设置为0def get_descriptive_name(self):#方法get_descriptive_name(),创建一个队汽车进行描述的字符串"""返回整洁的描述性信息"""long_name = str(self.year)+' '+self.make+' '+self.model#汽车描述的字符串return long_name.title()def read_odometer(self):"""打印一条指出汽车量程的信息"""print("This car has "+str(self.odometer_reading)+" miles on it.")"""2.通过方法修改属性值"""def update_odometer(self,mileage):#方法update_odomete""""将里程表读数设置为指定的值"""# self.odometer_reading = mileage"""禁止将里程表的值往回调"""if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")"""通过方法对属性的值进行递增"""def increment_odometer(self,miels):#方法increment_odometer(),接受一个单位为英里的数字,并将其加入到self.odometer_reading中""""将里程表读数增加指定的量"""self.odometer_reading += mielsdef fill_gas_tank(self):"""需要油箱"""print("Yes, gas is necessary!")========================================================
This car dosen't need a gas tank!
------------------------------2016 Tesla Model S
This car has a 70-kwh battery.
This car casn go approximately 240 miles on a full charge.
------------------------------This car has 24 miles on it.
2016 Audi A4
------------------------------2013 Subaru Outback
This car has 23500 miles on it.
This car has 23600 miles on it.

导入类

1.导入单个类

car.py
==========================================================""""给属性指定默认值"""
#odometer_reading ,属性,读出汽车的里程数,初始值为0
#read_odometer(),方法,获取到属性的值#创建一个表示汽车的类,存储有关汽车的信息,还有一个汇总这些信息的方法get_descriptive_nameclass Car():"""一次模拟汽车的简单尝试"""def __init__(self,make,model,year):#方法__int__()  self,make,model,year都为形参,形参self必不可少,且位于其他形参前#方法__int()__接受这些形参的值,并将它们存储在根据这个类创建的实例的属性中""""初始化描述汽车的属性"""self.make = make#以self为前缀的变量都可以供类中所有方法使用,可以通过类的任何实例来访问这些变量self.model = model#获取存储在形参model的值,并将其存储到变量model中,然后该变量被关联到当前创建的实例self.year = year"""给属性指定默认值"""self.odometer_reading = 0#创建一个odometer的属性,并将它的初始值设置为0def get_descriptive_name(self):#方法get_descriptive_name(),创建一个队汽车进行描述的字符串"""返回整洁的描述性信息"""long_name = str(self.year)+' '+self.make+' '+self.model#汽车描述的字符串return long_name.title()def read_odometer(self):"""打印一条指出汽车量程的信息"""print("This car has "+str(self.odometer_reading)+" miles on it.")"""2.通过方法修改属性值"""def update_odometer(self,mileage):#方法update_odomete""""将里程表读数设置为指定的值"""# self.odometer_reading = mileage"""禁止将里程表的值往回调"""if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")"""通过方法对属性的值进行递增"""def increment_odometer(self,miels):#方法increment_odometer(),接受一个单位为英里的数字,并将其加入到self.odometer_reading中""""将里程表读数增加指定的量"""self.odometer_reading += mielsdef fill_gas_tank(self):"""需要油箱"""print("Yes, gas is necessary!")
my_car.py
==========================================================
from car import Car#打卡模块car,并导入其中的Car类my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())my_new_car.odometer_reading = 23
my_new_car.read_odometer()
========================================================
2016 Audi A4
This car has 23 miles on it.

2.在一个模块中存储多个类

car.py
==========================================================
class Car():"""一次模拟汽车的简单尝试"""def __init__(self,make,model,year):#方法__int__()  self,make,model,year都为形参,形参self必不可少,且位于其他形参前#方法__int()__接受这些形参的值,并将它们存储在根据这个类创建的实例的属性中""""初始化描述汽车的属性"""self.make = make#以self为前缀的变量都可以供类中所有方法使用,可以通过类的任何实例来访问这些变量self.model = model#获取存储在形参model的值,并将其存储到变量model中,然后该变量被关联到当前创建的实例self.year = year"""给属性指定默认值"""self.odometer_reading = 0#创建一个odometer的属性,并将它的初始值设置为0def get_descriptive_name(self):#方法get_descriptive_name(),创建一个队汽车进行描述的字符串"""返回整洁的描述性信息"""long_name = str(self.year)+' '+self.make+' '+self.model#汽车描述的字符串return long_name.title()def read_odometer(self):"""打印一条指出汽车量程的信息"""print("This car has "+str(self.odometer_reading)+" miles on it.")"""2.通过方法修改属性值"""def update_odometer(self,mileage):#方法update_odomete""""将里程表读数设置为指定的值"""# self.odometer_reading = mileage"""禁止将里程表的值往回调"""if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")"""通过方法对属性的值进行递增"""def increment_odometer(self,miels):#方法increment_odometer(),接受一个单位为英里的数字,并将其加入到self.odometer_reading中""""将里程表读数增加指定的量"""self.odometer_reading += mielsdef fill_gas_tank(self):"""需要油箱"""print("Yes, gas is necessary!")"""将实例用作属性"""
#Battery实例用作ElectriCar类的一个属性
class Battery():#创建Battery类,未继承任何类""""一次模拟电动汽车电瓶的简单尝试"""def __init__(self,battery_size=70):#新增形参battery_size,并设置默认值70"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):""""打印一条描述电瓶容量的而消息"""print("This car has a "+ str(self.battery_size)+"-kwh battery.")def get_range(self):""""打印一条消息,之处电瓶的额续航里程"""if self.battery_size == 70:range = 240elif self.battery_size == 85:range = 270message = "This car casn go approximately "+str(range)message += " miles on a full charge."print(message)""""继承"""
#创建子类时,父类必须包含在当前文件中
class ElectriCar(Car):#子类ElectriCar""""Represent aspects of a car,specific to electeic vehicles"""def __init__(self,make,model,year):#方法__init__()接受创建Car实例所需的信息""""电动汽车的独特之处初始化父类的属性,再初始化电动汽车的所有属性"""super().__init__(make,model,year)#super()函数 ,调用ElectriCar父类的__init__(),让子类实例包含父类的所有属性# self.bettery_size = 70"""给子类定义属性和方法"""self.battery = Battery()#给子类添加self.battery属性,创建新的Battery实例 (没有设定属性值,默认值为70)def describe_battery(self):#给子类定义方法 describe_battery()"""打印一条描述电瓶容量的消息"""print("This car has a "+ str(self.battery_size)+" kwh battery.")"""重写父类的方法"""def fill_gas_tank(self):"""电动汽车没有油箱"""print("\n"+"This car dosen't need a gas tank!")print("------------------------------" + "\n")
my_electric_car.py
==========================================================
from car import  ElectriCarmy_tesla = ElectriCar('tesla','model s',2016)print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
========================================================
This car dosen't need a gas tank!
------------------------------2016 Tesla Model S
This car has a 70-kwh battery.
This car casn go approximately 240 miles on a full charge.

3.从一个模块中导入多个类

my_cars.py
==========================================================
from car import Car,ElectriCar#从一个模块中导入多个类,用逗号分隔各类my_beetle = Car('volkswagen','beetle',2016)#创建一辆大众甲壳虫普通汽车实例
print(my_beetle.get_descriptive_name())#调用方法get_descriptive_name()my_tesla = ElectriCar('tesla','roadster',2006)#创建一辆特斯拉Roadster电动汽车
print(my_beetle.get_descriptive_name())
==========================================================
This car dosen't need a gas tank!
------------------------------2016 Volkswagen Beetle
2016 Volkswagen Beetle

4.导入整个模块

my_cars.py
==========================================================
"""导入整个模块,再使用据点表示法访问需要的类"""
import carmy_beetle = car.Car('volkswagen','beetle',2016)#创建一辆大众甲壳虫普通汽车实例
print(my_beetle.get_descriptive_name())#调用方法get_descriptive_name()my_tesla = car.ElectriCar('tesla','roadster',2006)#创建一辆特斯拉Roadster电动汽车
print(my_beetle.get_descriptive_name())
==========================================================
This car dosen't need a gas tank!
------------------------------2016 Volkswagen Beetle
2016 Volkswagen Beetle

5.导入模块中的所有类

from module_name import *#不推荐使用

6.从一个模块中导入另一个模块

"""将Car类存储在一个模块中,并将ElectricCar和Battery类存储在另一个模块中,
第二个模块为electric_car.py,并将Battery和ElectriCar类复制到这个模块中"""
electric_car.py
==========================================================
"""一组可用于表示电动汽车的类"""
from car import  Car"""将实例用作属性"""
#Battery实例用作ElectriCar类的一个属性
class Battery():#创建Battery类,未继承任何类""""一次模拟电动汽车电瓶的简单尝试"""def __init__(self,battery_size=70):#新增形参battery_size,并设置默认值70"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):""""打印一条描述电瓶容量的而消息"""print("This car has a "+ str(self.battery_size)+"-kwh battery.")def get_range(self):""""打印一条消息,之处电瓶的额续航里程"""if self.battery_size == 70:range = 240elif self.battery_size == 85:range = 270message = "This car casn go approximately "+str(range)message += " miles on a full charge."print(message)""""继承"""
#创建子类时,父类必须包含在当前文件中
class ElectriCar(Car):#子类ElectriCar""""Represent aspects of a car,specific to electeic vehicles"""def __init__(self,make,model,year):#方法__init__()接受创建Car实例所需的信息""""电动汽车的独特之处初始化父类的属性,再初始化电动汽车的所有属性"""super().__init__(make,model,year)#super()函数 ,调用ElectriCar父类的__init__(),让子类实例包含父类的所有属性# self.bettery_size = 70"""给子类定义属性和方法"""self.battery = Battery()#给子类添加self.battery属性,创建新的Battery实例 (没有设定属性值,默认值为70)def describe_battery(self):#给子类定义方法 describe_battery()"""打印一条描述电瓶容量的消息"""print("This car has a "+ str(self.battery_size)+" kwh battery.")"""重写父类的方法"""def fill_gas_tank(self):"""电动汽车没有油箱"""print("\n"+"This car dosen't need a gas tank!")print("------------------------------" + "\n")
car.py
==========================================================
class Car():"""一次模拟汽车的简单尝试"""def __init__(self,make,model,year):#方法__int__()  self,make,model,year都为形参,形参self必不可少,且位于其他形参前#方法__int()__接受这些形参的值,并将它们存储在根据这个类创建的实例的属性中""""初始化描述汽车的属性"""self.make = make#以self为前缀的变量都可以供类中所有方法使用,可以通过类的任何实例来访问这些变量self.model = model#获取存储在形参model的值,并将其存储到变量model中,然后该变量被关联到当前创建的实例self.year = year"""给属性指定默认值"""self.odometer_reading = 0#创建一个odometer的属性,并将它的初始值设置为0def get_descriptive_name(self):#方法get_descriptive_name(),创建一个队汽车进行描述的字符串"""返回整洁的描述性信息"""long_name = str(self.year)+' '+self.make+' '+self.model#汽车描述的字符串return long_name.title()def read_odometer(self):"""打印一条指出汽车量程的信息"""print("This car has "+str(self.odometer_reading)+" miles on it.")"""2.通过方法修改属性值"""def update_odometer(self,mileage):#方法update_odomete""""将里程表读数设置为指定的值"""# self.odometer_reading = mileage"""禁止将里程表的值往回调"""if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")"""通过方法对属性的值进行递增"""def increment_odometer(self,miels):#方法increment_odometer(),接受一个单位为英里的数字,并将其加入到self.odometer_reading中""""将里程表读数增加指定的量"""self.odometer_reading += mielsdef fill_gas_tank(self):"""需要油箱"""print("Yes, gas is necessary!")
my_car.py
=========================================================
from car import  Car#从模块car中导入Car类
from  electric_car import  ElectriCar#从模块electric_car中导入ElectriCar类my_beetle = Car('volkswagen','beetle',2016)#创建一辆大众甲壳虫普通汽车实例
print(my_beetle.get_descriptive_name())#调用方法get_descriptive_name()my_tesla = ElectriCar('tesla','roadster',2006)#创建一辆特斯拉Roadster电动汽车
print(my_beetle.get_descriptive_name())
=========================================================
This car dosen't need a gas tank!
------------------------------2016 Volkswagen Beetle
2016 Volkswagen Beetle

课后例题






chapter9 类相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. Python从入门到实践习题答案(第九章 类)

    在学习<Python从入门到实践>,代码是自己编写的噢(虽然有些代码有参考其他大佬),点个赞再走8~ 9-1 餐馆:创建一个名为 Restaurant 的类,其方法__init__()设置 ...

  3. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  4. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  5. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  6. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  7. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  8. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  9. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

最新文章

  1. 列举一些常见的系统系能瓶颈 Common Bottlenecks
  2. 解决element-ui table 表格排列错位问题
  3. redis api 中文文档_我的Redis学习资料库
  4. [十二省联考2019]字符串问题 后缀自动机 + 拓扑排序 + 最长路 + 倍增
  5. js 防止重复提交方案
  6. 如何禁止用户删除计算机服务,怎样才能禁止别人删除我电脑中的文件?
  7. μC/OS-II兼容层——让基于μC/OS-II开发的应用层无感地迁移到RT-Thread操作系统
  8. Bitmap、BitSet、RoaringBitmap持久化存储
  9. linux文件名小写变大写命令,通过Ubuntu命令行将文件名转换为小写
  10. uniapp、vue实现滑动拼图验证码
  11. 中链云 | IPFS入门知识(五)
  12. Java虚拟机(JVM)面试题(2022年总结最全面的面试题!!!)
  13. 坐标系旋转与点旋转的变换公式
  14. airpak模拟案例,Airpak模拟教程-体育馆通风模拟案例-CFD数值模拟教程airpak
  15. 使用expression design制作silverlight LOGO那种烟雾效果教程(翻译)
  16. tyvj1172 自然数拆分Lunatic版
  17. Ubuntu 11.10与“核高基画饼“
  18. TrajGRU降雨量预测: 一个基准和一个新的模型
  19. 农村小伙艰难的复工之路
  20. 做人做事需牢记20条原则

热门文章

  1. 求两个正整数的最小公倍数
  2. Docker实践2:用Docker搭建hg-server
  3. olabuy 穿梭于旅途 漫步于人生
  4. 2月19日B组比赛总结
  5. mysql索引_MySQL索引
  6. PHP实现Java API接口的调用(JavaBridge环境搭建)
  7. 人生,总是懂得太慢,明白得太晚!
  8. with为什么用在读写文件_你在读什么?
  9. chrome linux添加图标,IT之家学院:Chromebook修改Linux容器安装源教程详解
  10. Android下基于XML的Graphics shape的高级UI设计,定义圆角背景等