Python学习第四章
1.类和对象:
类对象支持两种操作:属性引用和实例化。
属性引用:obj.name
构造方法:类会定义一个名为__int__()的特殊方法如下
def __init__(self):
self.data=[]
类定义了__init__()方法的话,类的实例化操作会自动调用__init__()的方法。如下所示:
X=Class()
当然,__init__()方法可以有参数,参数通过__init__()传递到类的实例化操作上。如下所示:
class All:
def __init__(self,realpart,imagpart):
self.r=realpart
self.i=imagpart
X=All(2,3.2)
print(X.r,X.i)
这样我们就把值传递到了X上,输出的结果为:2 3.2
看到这里,我们也许会对self产生疑问,下面我们就对self 进行解释:
self代表类的实例,奥不是类,代表的是当前对象的地址,self.class则指向类
这里要注意的是self并不是python的关键字,我们把它化成we也是可以的,只不过我们
规定用self。
2.类的方法
在类的内部,使用def关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是
类的实例。
class man:
name=''
age=''
__weigth=0(__. 属性为私用的属性,在内部类无法进行直接访问)
def __init__(self,n,a,w):
self.name=n
self.age=a
self.__weigth=w
def speak(self):
print("%ssay:I am%do ld。"%(self.name,self.age))
下面我们来实例化:
p=man('xiaodong',20,170)
p.speak()
以上代码的输出为:
xiaodong say:i am 20 old
如果我们想要输出__weight,却是没有结果的,该属性只用在 man中使用
3.类的继承:
python的基类中如果有相同的方法名,但是在子类中使用时却没有指定,python从左到右搜索就方法在子类中没有找到时,查找基类中是否包含方法
如下:
class dong:
clas dong1要继承class dong
clss dong1 (class dong)
当然类可以多继承,但是要注意圆括号父类的排序,如果父类中有相同的方法名,但是子类使用时没用指定,python从左到右搜索再到父类中是否包含该方法。如下:
calss dong1
class dong2
dong3继承上面的类
class dong3(dong1,dong2):
a=''
def __init__(self ,n,a,w,g):
dong1.__init___(self,n,a,w,g)
dong2.__init__(self,n.t)
test=sample("Tim",25,80,4,"python")
test.speak()
4.方法的重写:
如果你的父方法的功能不可以满足你的需求,那么你可在子类重写你父的方法,如下:
class P arent:
def muMethon(self):
print(" 调用父类方法")
class Child(Parent):
def muMethon(self):
print(" 调用子类的方法')
c=Child()
c.muMethon()
执行以上代码的输出结果为:
调用子类方法
5.运算符重载;
class dong:
def __init__(self,a,b):
self.a=a
self.b=b
def __str__(self):
return' dong(%d,%d)'%(self.a,self.b)
def__add__(self,other):
retur dong(self.a+other.a,self.b+other.b)
v1=dong(2,10)
v2=dong(5,-2)
print(v1+v2)
以上代码的执行结果为dong(7,8)
6. 装饰
装饰
对原有的方法进行美化,更好的实现功能,如下我们以吃火锅为例子:
原材料:
锅底
装饰:
肥牛 品羊肉 蔬菜
import types
def feiniu(n):
print("肥牛:¥58")
if type(n) == types.FunctionType:
return n()+58
return n+58
def shucai(n):
print("蔬菜:$17")
if type(n) == types.FunctionType:
return n()+17
return n+17
@shucai
@feiniu
def mala():
print("麻辣锅底:$12")
return 12
print("共消费:"+str(mala))
Python学习第四章的更多相关文章
- Python学习(四)数据结构(概要)
Python 数据结构 本章介绍 Python 主要的 built-type(内建数据类型),包括如下: Numeric types int float Text Sequence ...
- python学习第四讲,python基础语法之判断语句,循环语句
目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...
- python学习第四次笔记
python学习第四次记录 列表list 列表可以存储不同数据类型,而且可以存储大量数据,python的限制是 536870912 个元素,64位python的限制是 1152921504606846 ...
- python学习-第四天补充-面向对象
python学习-第四天补充-面向对象 python 私有 --name mangling(名字修改.名字) 在命名时,通过使用两个下划线作为开头,可以使得这个变量或者函数编程私有的,但是这个其实的p ...
- python学习第四十八天json模块与pickle模块差异
在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点 跨语言,体积小 缺点 只能支持 int st ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
- python学习(四) 字典:当索引不好用时
第四章 字典:当索引不好用时 4.1 字典的使用 字典的适用场景: 表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改时间,用文件名作为键: 数字电话/地址簿 4.2 创建和使用字典 ...
- python 教程 第四章、 控制流
第四章. 控制流 控制语句后面要加冒号: 1) if语句 if guess == number: print 'Congratulations, you guessed it.' # New b ...
- Java基础知识二次学习--第四章 异常
第四章 异常处理 时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: ...
随机推荐
- python中建模分析零息票收益率曲线--复利和连续复利
收益率曲线(Yield Curve)是显示一组货币和信贷风险均相同,但期限不同的债券或其他金融工具收益率的图表.纵轴代表收益率,横轴则是距离到期的时间.在此用python建模分析零息票收益率曲线,输出 ...
- CUDA compiler driver nvcc 散点 part 1
▶ 参考[https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html] ▶ nvcc 预定义的宏 __NVCC__ // 编译 ...
- Bash常用快捷键及其作用
在 Bash 中有非常多的快捷键,如果可以熟练地使用这些快捷键,可有效地提高我们的工作效率.只是快捷键相对较多,不太好记忆,这就要多加练习和使用.这些快捷键如表 1 所示. 表 1 Bash 常用快捷 ...
- MFC笔记2
1.Create()函数创建,该函数原型如下: BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* ...
- angular分页插件tm.pagination二次触发问题解决歪方案
今天在学习angularjs的分页插件时遇到了一个前端的问题,谷歌浏览器开发者模式调试的时候发现每次点击分页刷新按钮会触发两次后台请求,ajax向后台发送了两次请求,这对于强迫症患者来说是一个比较恶心 ...
- 第一个只出现一次的字符字符(python)
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). # -*- codin ...
- Metasploit用法大全
Metasploit用户接口msfconsoleArmitage: KaliGUI启动:armitage命令启动 Metasploit功能程序msfvenom集成了载荷生成器.载荷编码器.空指令生成 ...
- RFID数据清洗与数据清洗的区别
RFID数据清洗和一般数据清洗的不同: RFID数据清洗已经跨越到硬件范畴!造成脏数据的原因是硬件原理和硬件所处环境本身!要提高RFID数据清洗能力,就必须同时研究技术原理和环境本身之间的互动关系,而 ...
- 46-web页面登入前和登入后控制
可以将user存入session中,然后在前端根据能否取到user,来判断是否登入 <c:if test="${user == null }"> <li clas ...
- mysql-8.0.15-winx64 解压版安装 图文详解
1.官网下载 https://dev.mysql.com/downloads/mysql/ 2.解压到合适的目录 3.配置环境变量 ①. path ②.MYSQL_HOME 4.新建一个my.ini ...