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. List转Json函数

    public string ObjectToJson<T>(string jsonName, IList<T> IL) { StringBuilder Json = new S ...

  2. Selenium IDE录制脚本时弹出窗口的完美处理

    很多朋友录制脚本时新打开弹出窗口后无法定位元素,我也遇到同样的问题,国内没有什么好的资料,于是就阅读英文,不断尝试,感觉那个selectWindow(title)什么就是个坑,我用这种方法成功处理后得 ...

  3. 转载:指针delete后要设置为NULL

    本文来自:http://rpy000.blog.163.com/blog/static/196109536201292615547939/ 众所周知,最开始我们用new来创建一个指针,那么等我们用完它 ...

  4. leetcode124

    class Solution { int maxValue; public int maxPathSum(TreeNode root) { maxValue = Integer.MIN_VALUE; ...

  5. 保存xml报错 'UTF_8' is not a supported encoding name

    ArgumentException: 'UTF_8' is not a supported encoding name. For information on defining a custom en ...

  6. LeetCode OJ 102. Binary Tree Level Order Traversal

    题目 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...

  7. ligbox 插件介绍

    浏览器支持情况:一般情况都支持.最好是jQuery v1.x + lightbox.js,这样的组合IE6,IE7,IE8也支持! 1 light插件的下载地址:https://pan.baidu.c ...

  8. Linux - 操作系统的发展史

    操作系统的发展史(科普章节) 目标 了解操作系统的发展历史 知道 Linux 内核及发行版的区别 知道 Linux 的应用领域 01. 操作系统的发展历史 1.1 Unix 1965 年之前的时候,电 ...

  9. create react app遇到的问题

    我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求 ...

  10. 169. Majority Element (Array)

    Given an array of size n, find the majority element. The majority element is the element that appear ...