《Python编程从入门到实践》_第九章_类
创建一个简单的类
根据Dog类创建的每个实列都将存储名字和年龄。我们赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + "now is sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + "rolled over!")
my_dog = Dog('tom','')
print("my dog name is " + my_dog.name.title() )
访问属性
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " now is sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
print(my_dog.name)
print(my_dog.age)
#运行结果
tom
3
调用方法
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " now is sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
my_dog.sit()
my_dog.roll_over()
#运行结果
Tom now is sitting.
Tom rolled over!
根据Dog类创建实例后,就可以使用句点表示来调用Dog来定义的任何方法
创建多个实例
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " now is sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
your_dog = Dog('Mei',2)
print("My dog name is " + my_dog.name.title())
print("Your dog name is " + your_dog.name.title())
#运行结果
My dog name is Tom
Your dog name is Mei
可按需求根据类创建任意数量的实例。
使用类和实例
给属性指定默认值
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
my_car = Car('audi', 'a4', '')
print(my_car.model)
print(my_car.get_descri_name())
#运行结果
a4
2017 a4 audi
直接修改属性的值
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
my_car = Car('audi', 'a4', '')
print(my_car.get_descri_name())
my_car.year = 2016
print(my_car.get_descri_name())
#运行结果
2017 a4 audi
2016 a4 audi
通过方法修改
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
def update(self, mile):
"""更新里程值"""
if mile > self.odometer_reading:
self.odometer_reading = mile
else:
print("You can't roll back an odometer")
def increment_odometer(self,mile):
"""增加里程"""
self.odometer_reading += mile
def read_odometer(self):
"""打印汽车的里程"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4', '')
my_car.read_odometer()
my_car.odometer_reading = 10 #直接修改里程值
my_car.update(200) #通过方法修改里程
my_car.read_odometer()
my_car.increment_odometer(10)
my_car.read_odometer()
#运行结果
This car has 100 miles on it.
This car has 200 miles on it.
This car has 210 miles on it.
继承
如果我们想再一个class继承另一个类的属性,可以在类后面括号中加入类的名称,举例如下:
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
def update(self, mile):
"""更新里程值"""
if mile > self.odometer_reading:
self.odometer_reading = mile
else:
print("You can't roll back an odometer")
def increment_odometer(self,mile):
"""增加里程"""
self.odometer_reading += mile
def read_odometer(self):
"""打印汽车的里程"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
class ElectricCar(Car):
"""电动汽车的独特特性"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', '')
print(my_tesla.get_descri_name())
#运行结果
2016 model s tesla
为了继承父类的属性,还需要加入一个特殊的函数super(),帮助python将夫类和子类关联起来。
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
def update(self, mile):
"""更新里程值"""
if mile > self.odometer_reading:
self.odometer_reading = mile
else:
print("You can't roll back an odometer")
def increment_odometer(self,mile):
"""增加里程"""
self.odometer_reading += mile
def read_odometer(self):
"""打印汽车的里程"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
class Battery():
"""一次模拟电动汽车"""
def __init__(self,battery_size=70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kwh battery.")
class ElectricCar(Car):
"""电动汽车的独特特性"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', '')
print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()
#运行结果
2016 model s tesla
This car has a 70-kwh battery.
导入类
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""汽车的初始化"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 100
def get_descri_name(self):
"""描述汽车"""
long_name = str(self.year) + ' ' + self.model + ' ' + self.make
return long_name
def update(self, mile):
"""更新里程值"""
if mile > self.odometer_reading:
self.odometer_reading = mile
else:
print("You can't roll back an odometer")
def increment_odometer(self,mile):
"""增加里程"""
self.odometer_reading += mile
def read_odometer(self):
"""打印汽车的里程"""
print("This car has " + str(self.odometer_reading) + " miles on it.") class Battery():
"""一次模拟电动汽车"""
def __init__(self,battery_size=70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kwh battery.")
class ElectricCar(Car):
"""电动汽车的独特特性"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
self.battery = Battery()
创建另一个文件my_car.py,导入一个类
from car import Car
my_car = Car('audi', 'a4', '')
一个模块中可以存储多个类,所以可以一次导入多个类
from car import Car,Battery,ElectricCar
my_tesla = ElectricCar('tesla', 'model s', '')
print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()
导入整个模块
import car #导入整个模块的时候,需要使用句点表示法访问需要的类
my_tesla = car.ElectricCar('tesla', 'model s', '')
print(my_tesla.battery)
导入所有类
from car import * #导入所有的类
《Python编程从入门到实践》_第九章_类的更多相关文章
- 《Python编程从入门到实践》第二章_变量和简单数据类型
什么是变量呢? 举例: >>> message = "Hello,Python!" >>> print (message) Hello,Pyth ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- #Python编程从入门到实践#第三章笔记
列表简介 1.什么是列表 列表:由一系列按也顶顺序排列的元素组成.元素之间可以没有任何关系. 列表:用方括号[]表示,并用逗号分隔其中元素.名称一般为复数 2.访问元素 (1)列表是有序集合 ...
- 《Python编程从入门到实践》_第十章_文件和异常
读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...
- 《python编程从入门到实践》读书实践笔记(一)
本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
- Python编程从入门到实践笔记——文件
Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...
- Python编程从入门到实践笔记——类
Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
随机推荐
- 修改vscode caipeiyu.writeCnblog ,简化博客发布
修改vscode caipeiyu.writeCnblog ,简化博客发布 1. 安装caipeiyu.writeCnblog vscode的博客园文章发布插件WriteCnblog : https: ...
- ecliplse集成SVN
按照下图操作 : SVN不同版本下载链接在文章底部有提供 上图点击add之后稍等一会就会弹出下图: 上图点击next之后: 最后等待完成之后重启ecliplse即可 重启ecliplse之后显示SVN ...
- oracle 新增主键
alter table tablename add constraint pk_tablename primary key (column1,column2,...); 可以新增单主键或联合主键: 新 ...
- 光猫烽火Hg220破解超级口令实用图文教程(亲测)
1.用光猫背后的useradmin 帐号和密码登录 192.168.1.12.然后下载http://192.168.1.1/backupsettings.conf3.用记事本打开,ctrl+F,查找关 ...
- Django之跨域请求同源策略
同源策略: 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 而如果我们要跳过这个策略,也就是说非要跨域请求,那么就需要通过 ...
- Laravel-安装composer
一.系统环境 Laravel框架有些系统上的要求,因此需要保证自己运行环境.要求的环境有:对于PHP的版本要求比较法高,其他的是扩展,可以在php.ini文件中开启 PHP >= 5.5.9 ...
- GN算法---《Community structure in social and biological networks》这篇论文讲了什么?
用中文记下这篇论文的大致意思,以防止忘了.好记性不如烂笔头! 摘要:最近的一些研究在研究社交网络或WWW.研究者都集中于研究网络的“小世界性”,“幂率分布特性”,“网络传递性”(聚类性吧).本文提出网 ...
- SDUT OJ 数据结构实验之图论八:欧拉回路
数据结构实验之图论八:欧拉回路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- 一步步yum安装LNMP,脱坑笔记!!!
更改国内yum源: 1.备份yum源文件,位置在/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/ ...
- redis中使用lua脚本
lua脚本 Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能 使用脚本的好处 1.减少网络开销,在Lua脚 ...