1. 面向对象
"""
1. 面向对象:
利用对象来封装数据和操作那些数据的方法
2. 主要目的:
提高程序的可维护性和可扩展性
"""
1.1 定义类
"""
# 定义类
class 类名:
# 定义方法
方法列表...
# 创建对象的语法格式如下:
对象名 = 类名() # 创建对象
# 可通过对象名.方法来调用方法
对象名.方法名() #调用方法
"""
class Car:
def run(self):
print('能跑起来...')
car = Car()
car.run()
1.2 self 关键字
"""
为什么需要self关键字:
类和对象的关系1:N ,为了区分那个对象调用了类的方法,引入了self
谁调用run函数 self就是谁
self关键字的作用:
在类的内部,调用类的方法 self.work()
关键字 self
self也是Python内置的关键字之一,其指向了对象实例本身【对象自己】
在类内部调用方法:一般用在私有方法上
"""
class Car():
def run(self):
print('能跑起来...')
def work(self):
self.run()
car = Car()
car.work()
1.3 对象属性-添加和获取
"""
添加属性
对象名.属性 = 属性值
获取属性
对象名.属性
类内部获取对象属性
在类的内部: self.属性
"""
class Car():
def run(self):
print('能跑起来...')
def work(self):
self.run()
car = Car()
car.color = 'red'
print(car.color)
1.4 魔法方法
"""
对于魔法方法,都有一个共同的特性,那就是它们总是被双下划线所包围,如下:
__魔法方法名__()
语法:
class 类名:
def __魔法方法名__(self[,xxx,xxx]):
代码
...
魔法方法: 与普通方法区别
自动调用,特殊情况下
前后被双下滑线包围
init方法:创建对象时自动调用,用来对对象属性进行赋值
无参(self):在类内部进行属性值的确定
有参: 通过类外部实现属性值的设置
str方法:print(对象)是自动调用,直接输出str方法返回的结果
del方法:删除对象时自动调用
"""
1.5 _ _ init _ _()
"""
无参数的__init__()方法
当仅需在类内部使用及初始化某些属性时,可以使用,格式如下:
def __init__(self):
# 初始化属性 对象名.属性 = 属性值
self.属性 = 属性值
代码
......
"""
class Car:
def __init__(self):
self.color = 'red'
self.number = 4
def show(self):
print(f'车身颜色:{self.color}')
print(f'车轮数:{self.number}')
car = Car()
car.show()
"""
有参数的__init__()方法
def __init__(self,参数1,参数2,...):
代码
......
"""
class Car:
def __init__(self, color, number):
self.color = color
self.number = number
def show(self):
print(f'车身颜色:{self.color}')
print(f'车轮数:{self.number}')
car = Car('black', 8)
car.show()
1.6 _ _ str _ _()
"""
当使用print输出对象时,默认打印对象的内存地址值【十六进制】。 若要让输出对象名时,不是内存地址值,应该要在类中定义str方法。
如果类定义了`__str__`方法,那么就会打印从在这个方法中 return的数据
语法:
class 类名:
def __str__(self):
代码
...
return 值 # 说明:值的类型必须是字符串类型
"""
class Car:
def __init__(self):
self.color = '红色'
self.number = 4
def __str__(self):
print(f'{self.color}的汽车有{self.number}个车轮')
car = Car()
print(car)
1.7 _ _ del _ _()
"""
当一个实例被销毁时调用的方法
"""
class Car:
def __init__(self,color):
self.color = color
def __del__(self):
print('自动调用了del魔法方法')
car = Car('红色')
del car
print(car.color)