面向对象实现方法
定义类
语法
class 类名():
代码
........
注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯
示例代码
class Xi():
def wash(self):
print('洗衣服')
创建对象
对象又名实例
语法
对象名 = 类名()
示例代码
haier = Xi()
print(haier)
haier.wash()
输出
<main.Xi object at 0x10f205fd0>
洗衣服
self
self是指调用该函数的对象
代码
class Washer():
def wash(self):
print('洗衣服')
print(self)
haier = Washer()
print(haier)
haier.wash()
输出
<main.Washer object at 0x107a27fd0>
洗衣服
<main.Washer object at 0x107a27fd0>
结论
由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象
一个类创建多个对象
示例代码
class Washer():
def wash(self):
print('洗衣服')
print(self)
haier1 = Washer()
haier1.wash()
haier2 = Washer()
haier2.wash()
输出
洗衣服
<main.Washer object at 0x107d6dfd0>
洗衣服
<main.Washer object at 0x107d6df70>
添加和获取对象属性
属性即是特征
类外面添加对象属性
语法
对象名.属性名 = 值
示例
class Washer():
def wash(self):
print('洗衣服')
haier1 = Washer()
haier1.width = 100
haier1.height = 200
类外面获取对象属性
语法
对象名.属性名
示例
print(f"洗衣服的宽度是:{haier1.width}")
print(f"洗衣服的高度是:{haier1.height}")
输出
洗衣服的宽度是:100
洗衣服的高度是:200
类里面获取对象属性
语法
self.属性名
示例
# 定义类
class Washer():
def wash(self):
# 类里面获取实例属性
print(f"洗衣服的宽度是:{self.width}")
print(f"洗衣服的高度是:{self.height}")
# 创建对象
haier1 = Washer()
# 添加实例属性
haier1.width = 100
haier1.height = 200
# 对象调用实例方法
haier1.wash()
输出
洗衣服的宽度是:100
洗衣服的高度是:200
魔法方法
__init__():方法的作用:初始化对象
代码示例
class Washer():
def __init__(self):
# 添加实例属性
self.width = 500
self.height = 600
def print_info(self):
print(f"洗衣服的宽度是:{self.width}")
print(f"洗衣服的高度是:{self.height}")
haier = Washer()
haier.print_info()
输出
洗衣服的宽度是:500
洗衣服的高度是:600
注意点
- init()方法,在创建一个对象时默认被调用,不需要手动调用
- init(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去
带参数的_init_()
思考
一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢?
回答
传参数
代码示例
# 定义类:带参数的init:宽度和高度
class Washer():
def __init__(self, width, height):
# 添加实例属性
self.width = width
self.height = height
def print_info(self):
print(f"洗衣服的宽度是:{self.width},洗衣服的高度是:{self.height}")
# 创建多个对象且属性值不同
haier1 = Washer(10, 20)
haier2 = Washer(100, 200)
# 调用实例方法
haier1.print_info()
haier2.print_info()
输出
洗衣服的宽度是:10,洗衣服的高度是:20
洗衣服的宽度是:100,洗衣服的高度是:200
魔法方法str
介绍
当使用print输出对象的时候,默认打印对象的内存地址。如果定义了_str_方法,那么就会打印这个方法中return的数据
代码示例
class Washer():
def __init__(self, width, height):
self.width = width
self.height = height
def __str__(self):
return "这是海尔洗衣机的说明书"
haier = Washer(100, 200)
print(haier)
输出
这是海尔洗衣机的说明书
魔法方法del
介绍
当删除对象时,python解释器也会默认调用_del_()方法
代码示例
class Washer():
def __init__(self):
self.width = 300
def __del__(self):
print("对象已经删除")
haier = Washer()
del haier
输出
对象已经删除