python编程从入门到实践第九章_《Python编程:从入门到实践》第九章笔记_七231fsda月mkq的博客-程序员宝宝

技术标签: python编程从入门到实践第九章  

9.1 创建和使用类

9.1.1 创建Dog类

class Dog():

def __init__(self,name,age): #3

"""初始化属性name和age"""

self.name = name

self.age = age

def sit(self):

print(self.name.title() + "is now sitting")

def roll_over(self):

print(self.name.title() + "rolled over!")

1.方法__init__()

类中的函数称为方法,3处的方法__init__()是一个特殊的方法,每当你根据类创建新实例时,Python都会自动运行它。该方法中包含三个self、name和age,在方法的定义中,形参self必不可少,还必须位于其他形参的前面。当Python调用__init__()方法创建实例时,每个类中的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

9.1.2 根据类创建实例

my_dog = Dog("willile",6)

1.访问属性

my_dog.name

2.调用方法

my_dog.sit()

9.2 使用类和实例

9.2.1 Car类

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

car = Car("audi","a4",2016)

print(car.get_name())

2016 audi a4

9.2.2 给属性指定默认值

在__init__()内指定属性的初始值是可行的,如果你对某个属性这样做了,就无须包含为他提供初始值的形参。

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

9.2.3 修改属性的值

1.直接修改属性的值

car.name = "jiayu"

2.通过方法修改属性的值

def update_odometer(self,mileage):

self.odometer = mileage

9.3 继承

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类。

9.3.1 子类的方法__init__()

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

class ElectricCar(Car):

def __init__(self,make,model,year):

super().__init__(make,model,year)

tesla = ElectricCar('tesla','s',2016)

创建子类时,父类必须包含于当前文件中,且位于子类前面。定义子类时,必须在括号内知名父类的名称。super()是一个特殊函数,帮助Python将父类与子类关联起来,让Python调用父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass),名称super因此而得名。

9.3.3 给子类定义属性和方法

class ElectricCar(Car):

def __init__(self,make,model,year):

super().__init__(make,model,year)

self.battery_size = 70

def describe_battery(self):

print(self.battery_size)

9.3.4 重写父类的方法

对于父类的方法,可根据子类的行为对其进行重写,在子类中定义一个这样的方法,要与重写的父类方法同名。这样Python将不会考虑父类方法,而只关注子类中定义的相应方法。

def fill_gas_tank():

print("no gas tank!")

9.3.5 将实例作为属性1

可将一个完整的类作为另一个类的属性

self.battery = Battery()

9.4 导入类

将Car类的定义写在car.py文件中

9.4.1 导入单个类

from car import Car

9.4.2 在一个模块中存储多个类

将互相有关联的类都加入模块car.py中,新建一个文件,导入ElectricCar类:

from car import ElectricCar

9.4.3 从一个模块导入多个类

from car import Car,ElectricCar

9.4.4 导入整个模块

import car

9.4.5 导入模块中的所有类

from module_name import *

9.4.6 在一个模块中导入另一个模块

有时候,需要将类分散到多个模块中,当一个模块中的类依赖于另一个模块中的类,这种情况下,可在前一个模块中导入必要的类

from car import Car

原文链接:https://blog.csdn.net/Karty9/article/details/106565928

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28941715/article/details/112038376

智能推荐

若依框架后端登录流程[email protected]红@旗下的小兵的博客-程序员宝宝_若依后端登录

若依框架前后端分离 项目(前端vue,后端 springboot)。这里只记录后端springboot,前端有疑问可留言!验证码:用户进入登录页,请求 /captchaImage 接口获取验证码:登录用户点击登录,前端会把如下参数传给后端获取用户信息登录接口 /loginloginService中的login方法:下边是security 的api了,也是重点:authenticationManager.authenticate() 是...

【知识图谱 赵军 学习笔记】第十章 知识问答与对话_JYNjyn666的博客-程序员宝宝

第十章 知识问答与对话自动问答概述知识问答知识问答技术概述基于语义解析的方法有监督方法语义组合模型语义辞典构造组合消歧模型无监督方法基于搜索排序的方法基于特征工程的方法问句特征抽取候选答案特征提取问句-候选答案匹配基于表示学习的神经网络方法常用评测数据及各方法性能比较知识对话知识对话技术概述任务导向型对话模型自然语言理解对话管理基于有限自动机的方法基于框架的方法基于概率模型的方法自然语言生成通用对话模型基于模板的方法端到端的方法目前的问答和对话系统大多只能回答事实性问答,不能很好处理复杂问题自动问答概述

剑指offer Leetcode 23.链表中环的入口节点_ziggy7的博客-程序员宝宝_leetcode 剑指offer 23

解法:快慢指针思想:记住画图时候只有a和b两个变量,横是a,圈是b​ 推出fast和slow都走的是b的倍数●f 始终= 2s,第一次相遇时f = s + nb,所以第一次相遇时慢指针走了nb步。●走a + nb步一定在环入口。所以相遇后,将fast放到head,走a步到环入口,slow走a步为a+nb也在环入口,所以在环入口相遇。注意:鲁棒性●需要加上下面代码,因为链表可能无环。//如果是因为为NULL退出循环,则说明无环,返回NULL if(fast == NULL || f.

用Cocos2d-x和libvlc写一个跨平台播放器_maikforever的博客-程序员宝宝_cocos vlc

简介:本文使用cocos2d-x和libvlc两大免费开源的跨平台框架,实现一个视频播放器。开发工具使用Visual Studio 2010,测试运行平台为Windows(其它平台暂时没测试)。cocos2d-x版本2.0.3,VLC版本2.0.5。    目前游戏程序开发者大部分在以下几个平台上开发游戏:Windows、Mac OS X、IOS和Android。开发2D游戏且跨平台,

找最长的字符串_真题OK撒的博客-程序员宝宝_stl 筛选最长字符串

7-62 找最长的字符串 (15 分)本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。输出格式:在一行中用以下格式输出最长的字符串:The longest is: 最长的字符串如果字符串的长度相同,则输出先输入的字符串。输入样例:5liwangzhangjinxiang结尾无空行输出样例:The longest is

There is no getter for property named ‘xxx‘ in ‘class [email protected]的博客-程序员宝宝

SpringBoot 项目使用mapper操作数据库时报错There is no getter for property named 'xxx' in 'class com.test.project.entity. 可能原因:1.entity字段名写错 2.mapper.xml文件字段或属性名拼写错误(比如mysql字段写成paramStr,实体类属性写成param_str)...

随便推点

在线JSON转Excel工具_入门小站的博客-程序员宝宝_在线json转excel

在线JSON转Excel工具https://toolgg.com/json-to-excel.html

机器学习笔记--SVM(MATLAB 实现代码)_weixin_39210914的博客-程序员宝宝_svm分类器matlab

我们知道SVM的基本原理就是找一个超平面(广义平面)将样本分为几个部分,即分类。MATLAB中自带SVM包,使用起来也十分方便,假如X是特征矩阵,Y是分类标签(可以是数值(1、2)也可以是string,总之有区别就行。)二分类代码SVMModel = fitcsvm(X,y) %训练分类器CVSVMModel = crossval(SVMModel); %分类器的交叉验证classLoss = kfoldLoss(CVSVMModel)% 样本内错误率[~,score] = predict

【小镇的技术天梯】Scapy学习日记(三)_雨中的小镇的博客-程序员宝宝_scapy有必要学吗?

这次我们使用Scapy来实施第四层的扫描发现 1、TCP协议扫描发现 这次我们将使用Scapy工具发送一个ACK包到TCP的80端口。该端口通常用于HTTP Web服务。首先我们输入Scapy启动Scapy工具,如下所示:【ACK包是用来控制TCP的三次握手协议的,不清楚的童鞋可以自行百度】我们定义一个IP包,目的地址为我的ubuntu虚拟机,地址是192.168.237.128,

[bzoj2595][WC2008]游览计划_FZHvampire的博客-程序员宝宝

2595: [Wc2008]游览计划Time Limit: 10 Sec Memory Limit: 256 MBSec Special Judge Submit: 849 Solved: 344 [Submit][Status][Discuss] Description Input第一行有两个整数,N和 M,描述方块的数目。 接下来 N行, 每行有 M 个非负整数, 如果

MICCAI 2021 FLARE 挑战:快速和低 GPU 内存腹部器官分割-附代码_Tina姐的博客-程序员宝宝_flare21挑战数据集 数据集解析

MICCAI 2021 FLARE 挑战:快速和低 GPU 内存腹部器官分割简介腹部器官分割在临床实践中发挥着重要作用,在某种程度上,这似乎是一个已解决的问题,因为最先进的方法已经在几个基准数据集中实现了观察者间的性能。然而,现有的腹部数据集大多只包含单中心、单阶段、单一机构或单一疾病的病例,并且尚不清楚是否可以将优异的性能推广到更多样的数据集上。此外,许多 SOTA 方法使用模型集成来提高性能,但这些解决方案通常具有较大的模型尺寸和大量的计算资源,在临床实践中部署是不切实际的。为了解决这些限制.

推荐文章

热门文章

相关标签