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 内容:异常的概念 心得: ...
随机推荐
- [Oracle,2018-03-02] oracle一次插入多条记录
insert into student(name,age) ' from dual union all ' from dual union all ' from dual 在oracle中不能像mys ...
- linux环境下载和安装scala
Linux下安装Scala和Windows下安装类似,步骤如下: 1.首先访问下载链接:http://www.scala-lang.org/download/默认这里下载的是Windows版本,这时点 ...
- java编程思想(2)--一切都是对象
1创建对象 String s ;创建引用,并未初始化,即引用未关联任何东西 String s2="asda"; 初始化 System.out.println(s2); System ...
- 算术运算,赋值运算,if语句,while,continue语句
算术运算 print(10 / 3)=3.333333333333 print(10 // 3)=3 print(10 ** 2)=100 赋值运算增量赋值 age=18 age+=1 print(a ...
- Activity中满屏和去标题的实现方法
两种方式: 在xml文件中进行配置 在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: a ...
- Vue开源项目汇总(史上最全)(转)
目录 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和 ...
- Dockerfile指令详解--VOLUME 指令
Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗.Alpine Linux ...
- mysql创建索引以及对索引的理解
创建表的时候创建索引 创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度.创建索引有3种方式,这3种方式分别是创建表的时候创建索引.在已经存在的表上创建索引和使用ALTER T ...
- Django提交文件的方式
以上传图片为列, 提交图片文件后能在不刷新页面的前提下显示图片 首先写出一个简单的提交文件的页面: <h>文件上传</h> 选择文件<input type="f ...
- idea编辑项目出现【Information:java: javacTask: 源发行版 7 需要目标发行版 1.7】
在编译项目时候出现问题: Information:java: javacTask: 源发行版 7 需要目标发行版 1.7 解决方案:按着图片操作,这几个地方设置的一样就可以了