1. dir 内置函数 在Python 中对象几乎是无所不在的,我们之前学习的变量、数据、函数都是对象 在 Python 中可以使用以下两个方法验证: 在标识符/数据后输入
1. dir 内置函数
- 在Python 中对象几乎是无所不在的,我们之前学习的变量、数据、函数都是对象
在 Python 中可以使用以下两个方法验证:
提示 __方法名__ 格式的方法是 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 用于判断 两个变量 引用对象是否为同一个
== 用于判断 引用变量的值 是否相等
>>> b = [1, 2, 3]
>>> b is a
False
>>> b == a
True
3 私有属性和私有方法
应用场景
- 在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到
- 私有属性就是对象不希望公开的属性
- 私有方法就是对象不希望公开的方法
定义方式
- 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法
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()