1. ​​dir​​ 内置函数

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

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

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

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

序号

方法名

类型

作用

01

​__new__​

方法

创建对象时,会被 自动 调用

02

​__init__​

方法

对象被初始化时,会被 自动 调用

03

​__del__​

方法

对象被从内存中销毁前,会被 自动 调用

04

​__str__​

方法

返回对象的描述信息,​​print​​ 函数输出使用

1.1 ​​__del__​​ 方法

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

1.2 ​​__str__​​ 方法

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

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

2. 身份运算符

身份运算符用于 比较 两个对象的 内存地址 是否一致 —— 是否是对同一个对象的引用

  • 在​​Python​​​ 中针对​​None​​​ 比较时,建议使用​​is​​ 判断

运算符

描述

实例

is

is 是判断两个标识符是不是引用同一个对象

x is y,类似 id(x) == id(y)

is not

is not 是判断两个标识符是不是引用不同对象

x is not y,类似 id(a) != id(b)

is 与 == 区别:

​is​​ 用于判断 两个变量 引用对象是否为同一个
​​​==​​ 用于判断 引用变量的值 是否相等

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a
False
>>> b == a
True

3 私有属性和私有方法

应用场景

  • 在实际开发中,对象某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到
  • 私有属性就是对象不希望公开的属性
  • 私有方法就是对象不希望公开的方法

定义方式

  • 定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法
class Women:

def __init__(self, name):

self.name = name
# 不要问女生的年龄
self.__age = 18

def __secret(self):
print("我的年龄是 %d" % self.__age)


xiaofang = Women("小美")
# 私有属性,外部不能直接访问
# print(xiaofang.__age)

# 私有方法,外部不能直接调用
# xiaofang.__secret()

3.2 伪私有属性和私有方法

提示:在日常开发中,不要使用这种方式访问对象的 私有属性 或 私有方法

​Python​​ 中,并没有 真正意义私有

  • 在给属性方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到
  • 处理方式:在名称前面加上​​_类名​​​ =>​​_类名__名称​
# 私有属性,外部不能直接访问到
print(xiaofang._Women__age)

# 私有方法,外部不能直接调用
xiaofang._Women__secret()