2018-10-28学习python第八天

1、面相对象基础语法

1.1  dir 内置函数(知道)

  • 在 Python 中 对象几乎是无所不在的,我们之前学习的 变量数据函数 都是对象

在 Python 中可以使用以下两个方法验证:

  1. 在 标识符 / 数据 后输入一个 .,然后按下 TAB 键,iPython 会提示该对象能够调用的 方法列表
  2. 使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法

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

序号 方法名 类型 作用
01 __new__ 方法 创建对象时,会被 自动 调用
02 __init__ 方法 对象被初始化时,会被 自动 调用
03 __del__ 方法 对象被从内存中销毁前,会被 自动 调用
04 __str__ 方法 返回对象的描述信息print 函数输出使用

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

1.2  定义简单的类(只包含方法)

  • 定义只包含方法的类
  • 创建对象
class Person:
    # 初始化方法
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    # 默认输出
    def __str__(self):
        return "我的名字叫 %s 体重 %.2f 公斤" % (self.name, self.weight)

    def run(self):
        print("%s 爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1

xiaoming = Person("小明", 75)
xiaoming.run()
xiaoming.eat()
xiaoming.eat()
print(xiaoming)

引用概念的强调

  • 在 Python 中使用类 创建对象之后xiaoming 变量中 仍然记录的是 对象在内存中的地址
  • 也就是 xiaoming 变量 引用 了 新建的人类对象
  • 使用 print 输出 对象变量,默认情况下,是能够输出这个变量 引用的对象 是 由哪一个类创建的对象,以及 在内存中的地址十六进制表示
  • 重写了__str__(self)方法就不会默认输出

1.3  方法中的 self 参数

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

1.4  初始化方法

  • 在日常开发中,不推荐在 类的外部 给对象增加属性

    • 如果在运行时,没有找到属性,程序会报错
  • 对象应该包含有哪些属性,应该 封装在类的内部
# 注意:这种方式虽然简单,但是不推荐使用!
xiaoming.address = "北京"

初始化方法

  • 当使用 类名() 创建对象时,会 自动 执行以下操作:

    1. 为对象在内存中 分配空间 —— 创建对象
    2. 为对象的属性 设置初始值 —— 初始化方法(init)
  • 这个 初始化方法 就是 __init__ 方法,__init__ 是对象的内置方法

__init__ 方法是 专门 用来定义一个类 具有哪些属性的方法

改造初始化方法 —— 初始化的同时设置初始值

  • 在开发中,如果希望在 创建对象的同时,就设置对象的属性,可以对 __init__ 方法进行 改造

    1. 把希望设置的属性值,定义成 __init__ 方法的参数
    2. 在方法内部使用 self.属性 = 形参 接收外部传递的参数
    3. 在创建对象时,使用 类名(属性1, 属性2...) 调用
class Cat:

    def __init__(self, name):
        print("初始化方法 %s" % name)
        self.name = name

tom = Cat("Tom")
lazy_cat = Cat("大懒猫")

1.5  内置方法和属性

序号 方法名 类型 作用
01 __del__ 方法 对象被从内存中销毁前,会被 自动 调用
02 __str__ 方法 返回对象的描述信息print 函数输出使用

__del__ 方法(知道)

  • 在 Python 中

    • 当使用 类名() 创建对象时,为对象 分配完空间后,自动 调用 __init__ 方法
    • 当一个 对象被从内存中销毁 前,会 自动 调用 __del__ 方法
  • 应用场景
    • __init__ 改造初始化方法,可以让创建对象更加灵活
    • __del__ 如果希望在对象被销毁前,再做一些事情,可以考虑一下 __del__ 方法
  • 生命周期
    • 一个对象从调用 类名() 创建,生命周期开始
    • 一个对象的 __del__ 方法一旦被调用,生命周期结束
    • 在对象的生命周期内,可以访问对象属性,或者让对象调用方法
class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 去了" % self.name)

# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)

# del 关键字可以删除一个对象
del tom

print("-" * 50)

__str__ 方法

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

注意:__str__ 方法必须返回一个字符串

class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 去了" % self.name)

    def __str__(self):
        return "我是小猫:%s" % self.name

tom = Cat("Tom")
print(tom)

原文地址:https://www.cnblogs.com/tangxlblog/p/9867155.html

时间: 2024-08-05 08:23:31

2018-10-28学习python第八天的相关文章

大牛推荐的10本学习 Python 的好书

Python:蛇亚目蟒科,主要包括分布于非洲及亚洲的无毒蟒蛇. Python:Richard Clabaugh拍摄的恐怖电影,2000年发行. Python:澳大利亚汽车公司. Python:英国偶发性核战争计划. Python:一种编程语言. 今天推荐给大家的这个清单,是10本Python学习的书籍,这些书籍都是Python领域的大牛多次提到并推荐的书籍:有面向初学者的,也有给进阶者的书籍. 上期传送门:6个炫酷又好用的Python工具 给Python 初学者 如果你之前一点编程经验都没有,先

2018.10.16python学习第二十天

常用模块 random 模块 ? 随机数生成模块 ? random.random() 0-1 不包括1的随机浮点数 ? random.randint(1,10) 1-10 包括1和10的整数 ? random.randrange(1,10) 1-10 包括1,但是不包括10的整数 ? random.choice(list) list 从list中随机取出一个数 ? random.choices(list,k=个数) list 从list中随机取出k个数 ? random.sample(list,

2018.10.11python学习第十七天

模块 1.模块是什么? 模块:一组功能的集合 功能:在python中,一个功能就是一个函数:一个py文件就是一个模块 2.为什么要用模块? 借鉴思想:可以极大的提升开发效率 自定义模块:抽取我们自己程序中要用的功能,定义成模块,然后程序的各部分都去模块中调 用,可以较少代码冗余. 3.如何使用模块? 大前提:注意区分 执行文件 vs 被导入文件 模块类型的分类: 1.自定义模块(第三方模块也属于自定义模块) 2.内置模块 (c语言编写,连接到python解释器中,如time模块) 3.已经编译为

2018.10.19学习总结

1正则表达式import re# [] 范围匹配 中间 用-来连接# re.findall("[a-zA-Z0-9]","a ab abc abcd a123c")# 如果要匹配 符号- 要写表达式的左边或右边# print(re.findall("[-ab]","a ab abc abcd a123c a--")) # 重复匹配 表达式的匹配次数# * 表示 任意次数 所以0次也满足print(re.findall(&quo

2018.10.18学习总结

1""" hash lib hash是一种算法 是将一个任意长的数据 根据计算 得到一个固定长度特征码 特征: 不同输入 可能会有相同的结果 几率特别小 相同的输入 必然得到相同结果 由于散列(特征)的性质 从原理来看是不可能 反解 用来 验证 两个输入的数据是否一致 使用场景 1.密码验证 123321 jahsajshajhsjahjas client 加密后结果 server 拿到加密后 2.验证数据是否被篡改 比如游戏安装包 有没有被改过 为了防止别人撞库成功 可用提

2018/10/31(python)

1.列表(list) 列表中的元素可以是字符串,数字,布尔值,列表还可以嵌套列表. 例   l=[1,2,3,"abc","name",[5,"pad"],b]                          <==列表中的列表被视为一个元素 列表元素可以在原来基础上修改 l=[2,"qwe",'p',1,['r',9,3,"po"],9] l[0]="ide" #改 print

2016.10.28学习笔记

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><!--代表网页--> <head> <!--头标签 里面主要放控制类的东

《转载》为什么我要在2018年学习Python?

本文转载自36kr 从网页编程到时髦的人工智能,机器学习,这个享有"瑞士军刀(万能工具)"盛誉的Python语言, 你学会了吗? 编者注: 根据维基百科的解释,"Python是一种广泛使用的高级编程语言,由吉多·范罗苏姆创造,第一版发布于 1991 年.Python 的设计哲学强调了代码的可读性和简洁的语法." 随着大数据,人工智能的兴起,越来越多的人也开始研究起这门语言.以下这篇文章编译自Alexus Strong 在在线学习编程网站Codecademy 上发表的

Python 3学习 ——Python 多进程与编码

Python 学习--Python 编码 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享 一.进程 1.概述 multiprocessing 包是 Python 中的多进程管理包.与 thread.Threading 类似,可以利用 multiprocessing 对象来创建一个进程.该 Processing 对象与 Thread 对象的用法相同,也有 start() run() join() 的方法.具体使用看下面代码实现.使用这些 API 的时候有如下几点注意事项: 十分有