对于面向过程的思想: 需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做)。开发中小型项目的效率很高。
对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心谁帮我做这件事(偷懒,找人帮我做)。更加适合用于大型开发场景。
面向对象的三大特征有:封装性、继承性、多态性。(同样这也是C++的三大特征)
类与对象的关系:用类去创建对象
类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念。
class 类名():
代码
......
类的命令要符合大驼峰命名习惯
对象名 = 类名()
class Washer():
def wash(self):
print('能洗衣服')
haier = Washer()
haier.wash() # 能洗衣服
self
指的是调用该函数的对象class Washer():
def wash(self):
print('wash clothes')
print(self)
haier = Washer()
print(haier)
haier.wash()
# <__main__.Washer object at 0x000002736D2B0190>
# wash clothes
# <__main__.Washer object at 0x000002736D2B0190>
属性即是特征,对象属性在类的内外都能添加与获取。
对象.属性名 = 值
haier1.width = 500
haier1.height = 800
对象.属性名
print(f'洗衣机的宽度为{haier1.width}', end=',')
print(f'洗衣机的高度为{haier1.height}')
self.属性名
class Washer():
def wash(self):
print('洗衣服')
def print_info(self):
print(self.width)
haier1 = Washer()
haier1.width = 500
haier1.height = 800
haier1.print_info()
在Python中,_xx_()
的函数叫做魔法方法,指的是具有特殊功能的函数。
__init__()
方法的作用:初始化对象。
__init__()
方法,在创建对象时默认被调用,不需要手动调用。__init__(self)
中的self
参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。class Washer():
def __init__(self):
self.width = 500
self.height = 800
def print_info(self):
print(f'洗衣机的宽度是{self.width},高度是{self.height}')
haier = Washer()
haier.print_info()
目的:传参数
class Washer():
def __init__(self, width, height=800):
self.width = width
self.height = height
def print_info(self):
print(f'洗衣机的宽度是{self.width},高度是{self.height}')
haier = Washer(500, )
haier.print_info()
__str__()
方法,那么就会打印从在这个方法中return的数据。class Washer():
def __init__(self, width, height=800):
self.width = width
self.height = height
def __str__(self):
return '这是海尔洗衣机的说明书!'
haier = Washer(500, )
print(haier) # 这是海尔洗衣机的说明书!
__del__()
方法。和C++简直一毛一样!(虽然是很久之前学的了。)class Washer():
def __init__(self, width, height=800):
self.width = width
self.height = height
def __str__(self):
return '洗衣机说明书'
def __del__(self):
print(f'{self}对象已经被删除')
haier_temp = Washer(10)
print(haier_temp.width)
# 10
# 洗衣机说明书对象已经被删除