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 内容:异常的概念 心得: ...
随机推荐
- leetcode1
public class Solution { public int[] TwoSum(int[] nums, int target) { ]; ; i < nums.Length; i++) ...
- python 爬虫启航
1. 使用excel(简单使用) 数据- 自网站-导入 2.you-get python爬虫入门 1.环境配置 python,request,lxml 2.原理 爬虫的框架如下: 1.挑选种子URL: ...
- JavaScript学习-3——数组、函数、递归
本章目录 -----------①数组 -----------②函数 -----------③递归 一.数组 弱类型:任何类型数据,且没有强度限制: 强类型:同一类型的数据存储的集合(内存中连续存储) ...
- MySQL innodb_autoinc_lock_mode 详解
innodb_autoinc_lock_mode这个参数控制着在向有auto_increment 列的表插入数据时,相关锁的行为: 通过对它的设置可以达到性能与安全(主从的数据一致性)的平衡 [0]我 ...
- 【Nodejs】Nodejsの環境構築
参考URL:http://www.runoob.com/nodejs/nodejs-install-setup.html Windowにインストールする方法を紹介します. ▲ダウンロードURL:htt ...
- python shell的交互模式和文本编辑模式
之前学python的时候,是拿<笨办法学python>练习的. 书里面基本都是以.py文件去写代码,也就是文本编辑模式. 而交互模式(也就是powershell),唯有在input用户输入 ...
- hugepage优势
hugepage的优势与使用 +2投票 优势 通过使用hugepage分配可以提高性能,因为需要更少的页,因此需要更少Translation Lookaside Buffers (TLB,高速传送 ...
- 分布式锁三种实现方式(DB,redis,zookeeper)比较
先贴出看到的一篇博客,后续补充自己总结分析的. https://blog.csdn.net/u010963948/article/details/79006572
- 摹客iDoc「标注」新玩法!这些细节让你爱不释手(201903-2版本更新)
哈喽小伙伴们,我们又见面啦!没错,小摹就是来告诉大家:摹客iDoc又双叒叕升级了!这次又上线了许多新玩法,在此之前,小摹先带大家温习一下iDoc以往的知识点: 攻城狮查看标注的利器 —— 标注信息智能 ...
- 操作系统学习笔记(三) windows内存管理
//系统物理页面是由 (Page Frame Number Database )简称PFN数据库来进行管理,实际上是一个数组,每个物理页面都对应一个PFN项. 进程的地址空间是通过VAD(Virtua ...