zoukankan      html  css  js  c++  java
  • python面向对象(二、基础语法)

    2.面相对象基础语法

    2.1 dir内置函数(知道)
    在Python中对象几乎是无所不在的,我们之前学习的变量、数据、函数都是对象
    在Python中可以使用以下两个方法验证:
    1)在标识符/数据后输入一个“.”,然后按下TAB键,iPython会提示该对象能够调用的方法列表

    2)使用内置函数dir传入标识符/数据,可以查看对象内的所有属性及方法

    提示:__方法名__格式的方法是Python提供的内置方法/属性,稍后会给大家介绍一些常用的内置方法/属性

    提示:利用好 dir() 函数,在学习时很多内容就不需要死记硬背了

    2.2 定义简单的类(只包含方法)
    面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!

    2.2.1 定义只包含方法的类
    在Python中要定义一个只包含方法的类,语法格式如下:
    方法的定义格式和之前学习过的函数几乎一样
    区别在于第一个参数必须是self,大家暂时先记住,稍后介绍self
    注意:类名的命名规则要符合大驼峰命名法

    2.2.2 创建对象
    当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
    对象变量 = 类名()

    2.2.3 第一个面向对象程序
    需求:小猫爱吃鱼,小猫要喝水
    分析:定义一个猫类Cat;
    定义两个方法eat和drink
    按照需求:不需要定义属性

    2.2.4 引用概念的强调
    在面向对象开发中,引用的概念是同样适用的!
    在Python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址,也就是tom变量引用了新建的猫对象
    使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
    提示:在计算机中,通常使用十六进制表示内存地址
    %d可以以10进制输出数字
    %x可以以16进制输出数字

    2.3 方法中的 self 参数

    2.3.1 给对象增加属性
    在Python中,要给对象设置属性,非常的容易,但是不推荐使用,因为:对象属性的封装应该封装在类的内部。
    只需要在类的外部的代码中直接通过“.”设置一个属性即可
    注意:这种方式虽然简单,但是不推荐使用!

    2.3.2 使用self方法
    由哪一个对象调用的方法,方法内的self就是哪一个对象的引用
    在类封装的方法内部,self就表示当前调用方法的对象自己
    调用方法时,程序员不需要传递self参数
    在方法内部:
    可以通过self. 访问对象的属性
    也可以通过self. 调用其他的对象方法

    在类的外部,通过变量名. 访问对象的属性和方法
    在类封装的方法中,通过self. 访问对象的属性和方法

    2.4 初始化方法

    2.4.1 在类的外部给对象增加属性的弊端
    将案例代码进行调整,先调用方法 再设置属性,观察一下执行效果

    程序执行报错,类的内部调用self.name时,还没有执行到tom.name=”Tom”。因此报错
    提示:
    在日常开发中,不推荐在类的外部给对象增加属性
    如果在运行时,没有找到属性,程序会报错
    对象应该包含有哪些属性,应该封装在类的内部

    2.4.2 初始化方法__init__
    当使用类名()创建对象时,会自动执行以下操作:
    1)为对象在内存中分配空间 — 创建对象
    2)为对象的属性设置初始值 — 初始化方法(init)
    这个初始化方法就是__init__方法,__init__是对象的内置方法
    __init__方法是专门用来定义一个类具有哪些属性的方法!

    2.4.3 在初始化方法内部定义属性
    在__init__方法内部使用self.属性名 = 属性的初始值就可以定义属性
    定义属性之后,再使用Cat类创建的对象,都会拥有该属性

    使用类名()创建对象的时候,会自动调用初始化方法 init

    2.4.4 改造初始化方法(初始化的同时设置初始值)
    在开发中,如果希望在创建对象的同时,就设置对象的属性,可以对__init__方法进行改造:
    1)把希望设置的属性值,定义成 init 方法的参数
    2)在方法内部使用 self.属性 = 形参 接收外部传递的参数
    3)在创建对象时,使用 类名(属性1, 属性2...) 调用

    2.4.5 方法传参

    2.4.6 方法嵌套

    2.4.7 练习:银行账户

    运行结果:

    2.5 内置方法(特殊成员)
    2.5.1 init(重要)
    参考:初始化方法__init__

    2.5.2 new(重要)
    参考:new 方法(重写)

    2.5.3 call
    在执行对象()时自动调用

    2.5.4 enter__和__exit
    与with语句配合使用,进入with语句时执行enter,离开时执行exit

    with open自动关闭文件,就是使用的该功能with语句:自动关闭文件

    2.5.5 getitem
    执行对象[]时,自动调用

    列表和字典内部会使用__getitem__

    2.5.6 setitem
    执行对象[key]=value时自动调用设置数据

    列表和字典内部会使用__setitem__

    2.5.7 hash
    执行到hash(对象)时,会自动调用,并返回一个数值

    可以控制对象是否可hash,可hash的对象可以做字典的key
    当字典存储数据时,自动根据key计算hash值,默认执行__hash__
    可哈希:

    不可哈希:

    2.5.8 eq
    比较相等(==)时调用,返回判断结果

    同理比较大于(gt)、小于(lt)、大于等于、小于等于时,也有相应的内置函数。
    对象按身高或体重进行比较或排序时,可以使用__gt__和__lt__。
    另外,进行加、减、乘、除运算时,也有相应的内置函数

    2.5.9 __iter__迭代器
    参考:“iter”方法就是迭代器

    2.5.10 del
    对象销毁前,被自动调用
    1)在Python中:
    (1)当使用类名()创建对象时,为对象分配完空间后,自动调用 init 方法
    (2)当一个对象被从内存中销毁前,会自动调用 del 方法
    2)应用场景:
    (1)init 改造初始化方法,可以让创建对象更加灵活
    (2)del 如果希望在对象被销毁前,再做一些事情,可以使用__del__方法


    3)生命周期:
    a)一个对象从调用 类名() 创建,生命周期开始
    b)一个对象的__del__方法一旦被调用,生命周期结束
    c) 在对象的生命周期内,可以访问对象属性,或者让对象调用方法

    2.5.11 str
    打印对象时,输出自定义内容
    在Python中,使用print输出对象变量,默认情况下,会输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
    如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了
    注意:__str__方法必须返回一个字符串

    使用__str__方法后,可以输出自定义内容:

  • 相关阅读:
    【常见问题汇总--持续更新】bootloader常见问题
    UCD9222 EN1/EN2
    cdce62005配置说明
    xilinx planahead partial reconfiguration
    诺基亚 920T
    不出现用户帐户控制-让Win7的用户账户控制(UAC)放过信任的程序
    python 拷贝文件夹下的文件 到 另一个文件夹
    python 计算两个日期间的小时数
    shell 解析 json
    shell 脚本运行 hive sql
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14071944.html
Copyright © 2011-2022 走看看