# 需求:洗衣机,功能:能洗衣服
# 1、定义洗衣机类
"""
class 类名():
代码
"""
class Washer():
def wash(self):
print("能洗衣服")
# 2 创建对象
# 对象名 = 类名()
haier = Washer()
# 3、验证成果
# 打印haier对象
print(haier)
# 使用wash功能--实例方法/对象方法 --对象名.wash()
haier.wash()
# 类:洗衣机,功能:能洗衣服
class Washer():
def wash(self):
print("洗衣服")
print(self)
haier1 = Washer()
print(haier1) #<__main__.Washer object at 0x00000223270D9710>
# haier.wash() #洗衣服 <__main__.Washer object at 0x00000223270D9710>
# 由于打印对象和打印self得到的内存地址是一样的,所以self指的是调用该函数的对象
haier2 = Washer()
print(haier2)
# 一个类可以创建多个对象;多个对象都调用函数的时候,self地址是不相同的
添加和获取对象属性
属性即是特征,比如:洗衣机的宽度、高度、重量
对象的属性既可以在类外面添加和获取,也能在类里面添加和获取
1 类外面添加对象属性
# 语法 对象名.属性名 = 值 dg:haier.width = 500
class Washer():
def wash(self):
print("洗衣服")
haier1 = Washer()
# 添加对象属性
haier1.width = 400
haier1.height = 500
# 类外面获取对象属性
# 获取属性 对象名.属性名
print("洗衣机的宽度是:%s"%haier1.width) #洗衣机的宽度是:400
print("洗衣机的高度是:%s"%haier1.height) #洗衣机的高度是:500
print("--------------------------------")
# 类里面获取对象属性
# 语法: self.属性名
class myWasher():
def wash(self):
print("洗衣服")
# 获取对象属性
def print_info(self):
# self.属性名
# print(self.width)
print("洗衣机的宽度是:%s"%self.width)
print("洗衣机的高度是:%s"%self.height)
my_haier = myWasher()
# 添加属性
my_haier.width = 400
my_haier.height = 500
# 对象调用方法
my_haier.print_info()
# 魔方方法
# 在python中,__xx__的函数叫做魔法方法,指的是具有特殊功能的函数
# 体验__init__
# __init__()的方法作用:初始化对象
# __init__()方法,在创建一个对象时默认被调用,不需要手动调用
# __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去
# 目标:定义init魔法方法设置初始化属性,并访问调用
"""
1 定义类:
init魔法方法:width 和 height
添加实例方法:访问实例属性
2 创建对象
3 验证结果
调用实例方法
"""
class Washer():
def __init__(self):
# 添加实例属性
self.width = 500
self.height = 800
def print_info(self):
print("洗衣机的宽度是:%s"%self.width)
print("洗衣机的高度是:%s"%self.height)
haier = Washer()
haier.print_info() #洗衣机的宽度是:500 洗衣机的高度是:800
# 带参数的__init__()
# 思考:一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢? 答:传参数
class Washer():
def __init__(self,width,height):
# 添加实例属性
self.width = width
self.height = height
def print_info(self):
print("洗衣机的宽度是:%s"%self.width)
print("洗衣机的高度是:%s"%self.height)
haier = Washer(100,200)
haier.print_info() #洗衣机的宽度是:100 洗衣机的高度是:200
__str__()
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__方法,那么就会打印从这个方法中return的数据
class Washer():
def __init__(self):
self.width = 300
def __str__(self):
return '解释说明:类的说明或对象状态的说明'
haier = Washer()
print(haier) # 解释说明:类的说明或对象状态的说明
# __del__()
# 当删除对象时,python解释器也会默认调用__del__()方法
class Washer():
def __init__(self):
self.width = 300
def __del__(self):
print("对象已经删除")
haier = Washer() #对象已经删除
# del haier