#面向对象 Object-Oriented Programming
###对象
####什么是对象
对象是指现实当中的物体和实体(人,车,动物等)
####什么是面向对象
把一切看成对象,用各种丢向之间的关系来描述事务
####对象的特征
- 对象有很多属性(名词或形容词),如年龄,姓名,性别等
- 对象有很多行为,如学习,吃饭,睡觉,踢球等
###类
####什么是类
拥有相同属性和行为的对象分为一组,即是一个类
类是用来描述对象的工具,用类可以创建此类的对象
####类和对象实例:
车(类) ----->>宝马(京A.88888) ----->> 实例/对象
车(类) ------>>奔驰(京A.66666) ------>> 实例/对象
车(类)。。。。。
狗(类)------>>哈士奇(户籍号:00001) ------>对象
狗(类)------>>萨摩耶(户籍号:00021) ------>对象
狗(类)------>>泰迪(户籍号:00034) ------>对象
int(类) ------>>100----->对象
。。。
无论是车、狗、还是int等,都说的是一类,比如我们单纯的说狗,能具体表现到什么品种,是谁家的还是流浪的吗?很显然不能,如果说谁谁家的一条代号为001的哈士奇,这就很确定了就是那一只狗,这只狗才是我们说的-----对象
####创建类
class 类名(继承列表):
'''类文档字符串'''
实例方法定义
类变量定义
类方法定义(@classmethod)
静态方法定义(@staticmethod)
####类的作用
- 用来描述对象的行为和属性
- 创建一个或多个对象(或实例)
####类的构造函数
作用:创建这个类的实例对象,并返回此实例对象的引用关系
说明:
- 实例有自己的作用域和命名空间
- 实例可以调用类方法和实例方法
- 实例可以访问类变量和实例变量
###函数的初始化方法
作用:对新创建的对象添加属性
语法格式:
class 类名(继承列表):
def __init__(self, [形参列表]):
语句块
说明:
- 初始化方法名必须为__init__,别的不好使
- 初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self传入__init__方法
- 构造函数的实参通过__init__方法的参数列表传入到__init__方法中
- 实例化方法内如果需要return语句返回,则只返回None
举个栗子:
class Car:
'''小汽车类'''
def __init__(self, c ,b, m):
# 三个属性
self.color = c # 颜色
self.brand = b # 品牌
self.model = m # 型号
print('初始化方法被调用')
def run(self, speed):
print('{}的{}{}正在以{}公里/小时的速度行驶'.format(self.color,self.brand, self.model, speed))
a4 = Car('红色', '奥迪', 'a6') # 将参数传给__init__
a4.run(99) # 调用run方法
以上栗子将a4自己传给类方法的self形参
####析构方法
class 类名(继承列表):
def __del__(self):
语句块
举个栗子:
class Car:
def __init__(self, info):
self.info = info
print('汽车对象', info, '被创建')
def __del__(self):
print('汽车对象', self.info, '被销毁')
c1 = Car('BYD')
del c1 # 销毁实例 c1
L = []
L.append(Car('汽车1'))
input('请输入回车继续执行')
print('程序退出')
说明:析构方法在对象呗销毁时自动调用
python语言不建议在对象被销毁时做任何人事情。
####预制实例属性
__doct__属性:绑定一个存储实例自身的变量字典
举个栗子:
>>> dog1 = Dog() # 创建一个对象
>>> print(dog1.__dict__)
{}
>>> dog1.color = '白色'
>>> print(dog1.__dict__)
{'color': '白色'}
>>> dog1.kinds = '哈士奇'
>>> print(dog1.__dict__)
{'color': '白色', 'kinds': '哈士奇'}
####class
绑定创建此实例的函数
作用:可以借此访问创建此实例的类
举个栗子:
>>> dog1 = Dog()
>>> print(dog1.__class__)
<class '__main__.Dog'>
>>> dog2 = dog1.__class__() # 绑定创建此实例的类
>>> print(dog2.__class__)
<class '__main__.Dog'>
本节完