往期文章给大家介绍了Python中的类、对象、属性、行为等概念,感兴趣的伙伴可以前往阅读。本期文章介绍一下如何定义和使用这些东西和简单谈一下Python中内置的魔法函数。看官,请随我来。。。。。。
一、定义类及其成员
类的定义严格说有3种方式,各个方式略有差别。可以根据需求灵活使用,但是推荐使用第3种方式。Why?我只能说------经验。
# 方式1:
class 类名:
# 属性(和定义变量一样)
# 行为(和定义函数一样,注意:第一个形参要写self)
# 方式2:
class 类名():
# 属性(就和定义变量一样)
# 行为(和定义函数一样,注意:第一个形参要写self)
# 方式3:
class 类名(opject):
# 属性(就和定义变量一样)
# 行为(和定义函数一样,注意:第一个形参要写self)
# 温馨提示:object是所有类的父类, 所有的类都直接或者间接继承自object。后面聊到继承就清楚了可以先记忆格式。
二、使用类的成员
说到使用大概思路就是“没有先创建,存在后调用”。在使用前先和大家聊一个Python的内置属性self。它在函数中使用,用于区分不同对象的。
在类内调用可以使用self. 的方式。
class man(opject):
# 1. 定义类的属性.
self.name = '张三'
# 2. 定义类的行为
def walk(self):
print('饭后走一走, 能活九十九!')
# 温馨提示:谁调用self就是谁。
在类外调用需要先创建类的对象再使用 对象名. 的方式调用。
# 1.创建类的对象
# 格式:对象名 = 类名()
m1 = man()
# 2.对象名. 的方式调用。
# 2.1 调用属性(并在控制台打印)
print(f'姓名: {m1.name}')
# 2.2 调用方法
m1.walk()
三、使用常用的魔法函数
3.1 初始化对象属性的函数
在创建对象的时候, 会被自动调用, 一般用于给对象初始化一些属性值。
# 1.定义汽车类
class Car():
# 用__init__()初始化属性值 带参数的 常用
def __init__(self, color=None, number=None):
# 类内定义属性并赋值
self.color = color
self.number = number
# 定义show()函数在类内部调用属性
def show(self):
print(f'颜色:{self.color} 轮胎数:{self.number}')
if __name__ == '__main__':
# 创建c1对象 并传参
c1 = Car('黑色',4)
#对象调用show()函数
c1.show()
# 打印结果为:颜色:黑色 轮胎数:4
3.2 字符串方式表示对象的函数
当输出语句直接打印对象的时候, 会自动调用该魔法方法, 默认打印的是地址值, 无意义, 一般会改为: 打印该对象的各个属性值。
# 1. 定义汽车类, 属性: 品牌, 价格.
class Car():
# 定义init, 初始化属性.
def __init__(self, brand, price):
self.brand = brand # 品牌
self.price = price # 价格
# 行为
def run(self):
print('汽车会跑!')
# 魔法方法, str
def __str__(self):
# return '我是str魔法方法'
return f'品牌: {self.brand}, 价格: {self.price}'
# 在main函数中测试调用.
if __name__ == '__main__':
# 2. 创建汽车类对象.
c1 = Car('大*蜂', 999999999) # 创建对象时, 自动调用了: init魔法方法
# 3. 直接打印c1对象
print(c1) # 默认调用了 __str__() 魔法方法.
# 打印结果为 品牌: 大*蜂, 价格: 999999999
3.3 删除对象的函数
当手动删除对象时或者文件执行结束后, 该函数会被自动调用。
# 1. 定义汽车类, 属性: 品牌, 价格.
class Car():
# 定义init, 初始化属性.
def __init__(self, brand, price):
self.brand = brand # 品牌
self.price = price # 价格
# 行为
def run(self):
print('汽车会跑!')
# 魔法方法, str
def __str__(self):
# return '我是str魔法方法'
return f'品牌: {self.brand}, 价格: {self.price}'
# 魔法方法, del
def __del__(self):
print(f'对象 {self} 被删除了!')
# 在main函数中测试调用.
if __name__ == '__main__':
# 2. 创建汽车类对象.
c1 = Car('大*蜂', 999999999) # 创建对象时, 自动调用了: init魔法方法
# 3. 直接打印c1对象
print(c1) # 默认调用了 __str__() 魔法方法.
# 4. 删除c1对象, 看看结果.
del c1
# 打印结果为 品牌: 大*蜂, 价格: 999999999
对象c1被删除了!