面向对象
面向对象是一种编程思想.
面向对象 ( Object Oriented ) 是将现实问题构建关系,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance )(就是对象) ,通过访问实例的属性和调用方法来进行使用。
类和对象的关系 就类似于 人类 之于 具体的某个人 , 家电之于 具体的一个冰箱, 对象就是类的实例化
面向对象的三大特征:封装、继承、多态。
创建类
语法:
class 类名(父类名):
...
父类名可以不写: 默认继承object
可以在class 里面写类的方法和属性
类中的 init 为创建对象时调用的方法,叫做初始化方法.(注意方法前后是双下划线)
前后双下滑线的方法是类的专有方法,有特殊含义:
类的专有方法:
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
__str__: 转换字符串
例子:
class MyClass:
"""一个简单的类实例"""
i = 12345
def f(self):
return 'hello world'`
image.png
# 声明一个类 语法: class 类名(父类名):
class Human(object):
# __init__ : 类的初始化方法
# self : 代表类的本身 ,name,age,sex 初始化的时候 要用到的参数
def __init__(self,name,age,sex):
# self.name = name : 把方法中的参数 绑定给 类的属性
self.name = name
self.age = age
self.sex = sex
# 类中的方法 必须包含self 参数
def eat(self):
print(self.name+'在吃饭 ')
def sleep(self):
print(self.name+'在睡觉')
# 类中的方法,可以调用其他方法,可以调用属性,除了init 方法
def info(self):
print('这个人叫%s,今年%s岁,性别: %s'%(self.name,self.age,self.sex))
self.eat()`
对象
创建对象语法:
对象名 = 类名(初始化属性)
调用对象
if __name__ == '__main__':
# 新建一个对象 , 根据 Human 类 新建对象
# 对象是 类的 实例化
boy = Human('小海豚', 28, '女')
# 可以通过对象去调用类的方法和属性
boy.eat()
boy.sleep()
boy.info()
print(boy.name)
#练习:
创建一个Car类,有三个属性name,no,speed, 编写三个方法:
show():输出每一个属性的值
start(): 启动,speed=100,输出车名,启动了
run(): 行驶,输出车名和当前速度
stop(): 刹车,speed=0,输出车名,刹车当前速度
创建一个car对象,依次 调用show(),start(),run(),stop()方法
# start(): 启动,speed=100,输出车名,启动了
def start(self):
self.speed=100
print("%s启动了"%(self.name))
#run(): 行驶,输出车名和当前速度
def run(self):
print("%s行驶了,当前速度%skm/h" % (self.name,self.speed))
#stop(): 刹车,speed=0,输出车名,刹车当前速度
def stop(self):
self.speed=0
print("%s刹车了,当前速度%skm/h" % (self.name,self.speed))
#创建一个car对象,依次 调用show(),start(),run(),stop()方法
if __name__ == '__main__':
# 根据类名新建对象
car=Car('jeep轿车','沪A1111',0)
# 通过对象去调用类的方法和属性
car.show()
car.start()
car.run()
car.stop()
网友评论