《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()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
随机推荐
- vs2015+opencv3.3.1 实现 c++ 灰度高斯滤波器
#include <opencv2\highgui\highgui.hpp> #include <iostream> #include<vector> using ...
- VM12安装Mac系统操作指南
1.第一步,操作按照这个链接来搞 VMware 12安装Mac OS 系统使用的是 OS X 10.11.1(15B42) 2.激活工具一定要使用 unlocker208 3.初次安装可能存在的报错 ...
- 决策树--Python
决策树 实验集数据: #coding:utf8 #关键词:决策树(desision tree).特征选择.信息增益(information gain).香农熵.熵(entropy).经验熵(H(D)) ...
- 手机端file限制只能选择图片、视频、音频,直接打开摄像头拍照或录像
限制只能选择图片 <input type="file" accept="image/*"> 限制只能选择视频 <input type=&quo ...
- 微信小程序获取用户手机号,服务器解码demo
原理:通过微信登陆接口wx.login得到encryptedData . iv .code.经过接口处理code得到sessionkey.最后官方demo得到解密后的手机号.(接口处理这一步也可以在 ...
- Tensorflow博文列表
tensorflow:https://wenku.baidu.com/view/489ecc9727fff705cc1755270722192e44365853.html 语义分割SegNet:htt ...
- ansible基本模块-server
ansible XXX -m service -a "name=XXX state=started enabled=yes"
- 使用octave符号运算求解不定积分、微分方程等(兼容matlab)
1.求解1/(1+cos(x))^2的不定积分. 在和学生讨论一道物理竞赛题的时候,出现了这个函数的积分求解需求.查积分表也可写出答案.但是可以使用octave的符号运算工具箱来做. syms x; ...
- C++_基础2-复合数据类型
C语言使用术语“派生类型”,C++对类关系使用术语“派生”.所以就改用“复合类型”. 数组 数组是一种数据格式,能够存储多个同类型的值. 数组声明应指出以下三点: 存储在每个元素中的值的类型: 数组名 ...
- sharepoint_study_2
描述:向SharePoint中批量添加用户 解决:原文地址:http://bbs.winos.cn/thread-89236-1-1.html 一般情况下,要想登录SharePoint server ...