一、面向对象
1. 定义类
class 类名():
....
2. 创建对象
对象名 = 类名()
3. self
self 指的是调用该函数的对象
class Washer():
def wash(self):
print("在洗衣服")
print(self) # <__main__.Washer object at 0x0000027AD526A400>
haier = Washer()
haier.wash()
print(haier) # <__main__.Washer object at 0x0000027AD526A400>
二、添加和获取对象属性
1. 类外面添加对象属性
对象名.属性名 = 值
class Washer():
def wash(self):
print("在洗衣服")
haier = Washer()
haier.width = 400
haier.height = 500
2. 类外面获取对象属性
对象名.属性名
class Washer():
def wash(self):
print("在洗衣服")
haier = Washer()
haier.width = 400
haier.height = 500
print(f"洗衣机的宽度是{haier.width}, 高度是{haier.height}")
3. 类里面获取对象属性
self.属性名
class Washer():
def wash(self):
print("在洗衣服")
def print_info(self):
print(f"获取到宽度{self.width},获取到高度{self.height}")
haier = Washer()
haier.width = 400
haier.height = 500
haier.print_info()
三、魔法方法
在Python中,_ xx _()的函数叫魔法方法,指的是具有特殊功能的函数。
1. _init _()
作用:初始化对象
class Washer():
def __init__(self):
self.width = 500
self.height = 800
def print_info(self):
print(f"宽度是{self.width},高度是{self.height}")
wash = Washer()
wash.print_info()
注意:__init __()方法,在创建一个对象时默认被调用,不需要手动调用。
__init __(self)中的self参数,不需要开发者传递,python解释器会自动把当前对象的引用传递过去。
2. 带参数的__init __()
思考:一个类可以创建多个对象,如何对不同对象设置不同的初始化属性呢?
class Washer():
def __init__(self, width, height):
self.width = width
self.height = height
def print_info(self):
print(f"宽度是{self.width},高度是{self.height}")
wash = Washer(800, 700)
wash.print_info()
wash1 = Washer(900, 650)
wash1.print_info()
3. __str __()
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str __()方法,那么就会打印从这个方法中return的数据。
class Washer():
def __init__(self, width, height):
self.width = width
self.height = height
def __str__(self):
return "这是洗衣机说明书"
wash = Washer(800, 700)
print(wash)
4. __del __()
当删除对象时,python解释器也会默认调用__del __()方法。
class Washer():
def __init__(self, width, height):
self.width = width
self.height = height
def __del__(self):
print(f"{self}对象被删除")
wash = Washer(800, 700)