看完这篇文章,你的Python基础就差不多了( 五 )

2. 面向对象基础语法2.1 dir 内置函数和内置方法在 Python 中 对象几乎是无所不在的 , 我们之前学习的 变量、数据、函数 都是对象 。在 Python 中可以使用以下两个方法验证:

  • 在 标识符 / 数据 后输入一个点 . , 然后按下 TAB 键 , iPython 会提示该对象能够调用的方法列表 。
  • 使用内置函数 dir 传入 标识符 / 数据 , 可以查看对象内的 所有属性及方法 。
    提示__方法名__格式的方法是 Python 提供的 内置方法 / 属性 。
序号 方法名 类型 作用 01 __new__ 方法 创建对象时 , 会被 自动 调用 02 __init__ 方法 对象被初始化时 , 会被 自动 调用 03 __del__ 方法 对象被从内存中销毁前 , 会被 自动 调用 04 __str__ 方法 返回对象的描述信息 , print 函数输出使用
提示 利用好 dir() 函数 , 在学习时很多内容就不需要死记硬背了 。
2.2 定义简单的类(只包含方法)
面向对象是更大的封装 , 在 一个类中封装多个方法 , 这样通过这个类创建出来的对象 , 就可以直接调用这些方法了!
定义一个只包含方法的类:
class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass方法 的定义格式和之前学习过的函数几乎一样 , 区别在于第一个参数必须是 self 。注意:类名的 命名规则 要符合 大驼峰命名法 。当一个类定义完成之后 , 要使用这个类来创建对象 , 语法格式如下:
对象变量 = 类名()
在面向对象开发中 , 引用的概念是同样适用的!
使用 print输出 对象变量 , 默认情况下 , 是能够输出这个变量 引用的对象 是 由哪一个类创建的对象 , 以及 在内存中的地址(十六进制表示) 。
提示:在计算机中 , 通常使用 十六进制 表示 内存地址 。
如果在开发中 , 希望使用 print输出 对象变量 时 , 能够打印 自定义的内容 , 就可以利用 __str__这个内置方法了:
class Cat:def __init__(self, new_name):self.name = new_nameprint("%s 来了" % self.name)def __del__(self):print("%s 去了" % self.name)def __str__(self):return "我是小猫:%s" % self.nametom = Cat("Tom")print(tom)
注意:__str__方法必须返回一个字符串 。
2.3 方法中的 self 参数在 Python 中 , 要 给对象设置属性 , 非常的容易 , 只需要在 类的外部的代码 中直接通过 对象.设置一个属性即可 , 但是不推荐使用:
看完这篇文章 , 你的Python基础就差不多了class Cat:"""这是一个猫类"""def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫在喝水")tom = Cat()# 给对象设置属性tom.name = "Tom"因为:对象属性的封装应该封装在类的内部
由哪一个对象调用的方法 , 方法内的 self就是哪一个对象的引用
  • 在类封装的方法内部 , self 就表示当前调用方法的对象自己 , 在方法内部:
    可以通过 self.访问对象的属性 , 也可以通过 self.调用对象的其他方法 。
  • 调用方法时 , 程序员不需要传递 self 参数 。
  • 在 类的外部 , 通过变量名.访问对象的 属性和方法
    在 类封装的方法中 , 通过 self.访问对象的 属性和方法
2.4 初始化方法:__init__
  • 当使用 类名() 创建对象时 , 会 自动 执行以下操作:
    为对象在内存中分配空间 —— 创建对象
    为对象的属性设置初始值 —— 初始化方法(__init__)
__init__ 方法是 专门 用来定义一个类具有哪些属性的方法!