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学习第四章的更多相关文章

  1. Python学习(四)数据结构(概要)

    Python 数据结构 本章介绍 Python 主要的 built-type(内建数据类型),包括如下: Numeric types          int float Text Sequence ...

  2. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  3. python学习第四次笔记

    python学习第四次记录 列表list 列表可以存储不同数据类型,而且可以存储大量数据,python的限制是 536870912 个元素,64位python的限制是 1152921504606846 ...

  4. python学习-第四天补充-面向对象

    python学习-第四天补充-面向对象 python 私有 --name mangling(名字修改.名字) 在命名时,通过使用两个下划线作为开头,可以使得这个变量或者函数编程私有的,但是这个其实的p ...

  5. python学习第四十八天json模块与pickle模块差异

    在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int st ...

  6. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

  7. python学习(四) 字典:当索引不好用时

    第四章 字典:当索引不好用时 4.1 字典的使用 字典的适用场景: 表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改时间,用文件名作为键: 数字电话/地址簿 4.2 创建和使用字典 ...

  8. python 教程 第四章、 控制流

    第四章. 控制流 控制语句后面要加冒号: 1)    if语句 if guess == number: print 'Congratulations, you guessed it.' # New b ...

  9. Java基础知识二次学习--第四章 异常

    第四章 异常处理   时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: ...

随机推荐

  1. [Oracle,2018-03-01] oracle常用函数

    最近经常用到一些oracle中的函数,今天就总结一些常用的: 一.单行函数 只处理单个行,并且为每行返回一个结果. 1.字符函数 (1)concat(str1,str2)字符串拼接函数 select ...

  2. python3笔记<二> List

    python数组申明用方括号:例: Arr = ['python','java','javascript'] 截取其中一段元素:例: Arr = [5,6,7,8,9,10,11,12,13,14,1 ...

  3. (5)修改Linux的基本配置

    **IP地址配置,最简单的方法:在命令行运行setup,按照提示修改即可. 1.修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=serv ...

  4. 工作流调度器azkaban

    为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很 ...

  5. Aplication的意义和生命周期,与Context的关系,以及关于Aplication和Context相关问题的记录和解决办法

    Context详解地址链接: http://blog.csdn.net/qinjuning/article/details/7310620 Application是一个应用中有且仅有一个的全局共享变量 ...

  6. 悲观锁,乐观锁,排他锁,行锁----MYSQL

    在说具体的锁结构时,先思考一个问题,那就是为什么要上锁?然后我要如何选择锁?锁具体如何实现? 在文章得末尾我给出了我的个人答案. 一.什么是悲观锁? 1.悲观锁就是在操作数据时,认为此操作会出现数据冲 ...

  7. java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. java泛型详解 1. 概述 泛型在 ...

  8. 常用的OO设计原则

    常用的OO设计原则: 1 封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和哪些不需要变化的代码混在一起. 2 针对接口编程,而不是针对实现编程. 3 多用组合,少用继承. 4 松耦合:为了 ...

  9. AngularJS学习笔记(二)

    一.AngularJS Select(选择框) 1.使用 ng-options 创建选择框 <div ng-app="myApp" ng-controller="m ...

  10. 视频和swf的相对路径加载,卸载

    package com{ import flash.display.MovieClip; import flash.net.NetConnection; import flash.net.NetStr ...