《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()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
随机推荐
- PHP+JQuery实现ajax跨域
jQuery实现ajax跨域 1.dataType:'jsonp'2.type: 'get'3.把要传的参数以url方式传出去 url:'http://gameapi.feiliu.com/lqzg ...
- Spring AOP的实现机制
AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理,日志,缓存等等.AOP 实现的关键在 ...
- YARN 的调度选项
YARN 中有三种调度器: 1. FIFO 调度器 (FIFO Scheduler) 应用在一个队列中,按照提交的顺序运行应用. 缺点:小作业如果在大作业后面提交,将会一直等到大作业结束才运行. 2. ...
- OOP1(定义基类和派生类)
面向对象程序设计基于三个基本概念:数据抽象,继承和动态绑定 数据抽象是一种依赖于接口和实现分离的编程技术.继承和动态绑定对程序的编号有两方面的影响:一是我们可以更容易地定义与其它类相似但不完全相同的类 ...
- linux+python+robot+jenkins
1.安装python 安装devtoolset # yum groupinstall “Development tools” 安装编译Python需要的包 # yum -y install zlib- ...
- 【hadoop】 eclipse中的“run on hadoop”和打包成jar提交任务的区别
eclipse中的 调试运行 及 “run on hadoop”默认只是运行在单机上的,因为要想在集群中让程序分布式运行还要经历上传类文件.分发到各个节点等过程, 一个简单的“run on hadoo ...
- Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表)
Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表) 题目描述 已知一个链表,每次对k个节点进行反转,最后返回反转后的链表 测试样例 Inpu ...
- 2、Numpy常用函数
创建单位矩阵和读写文件使用eye()创建单位矩阵 # -*- coding: utf-8 -*- import numpy as np i = np.eye(3) print(i) 结果: [[ 1. ...
- ajax beforeSend中无效果
asnyc:false 与beforesend 同时使用 无效果
- vue is detected
Vue.js is detected on this page. Devtools inspection is not available because it's in production mod ...