对象:
面向对象编程 是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。类来创建对象被称为实例化。
类:
可以简单理解为模块,就是不同的分类,像食物、车、学习等都属于不同的类型,简称类。那么食物有辣的、甜的等;车有客车、轿车;学习有学习数学、学习python等,它们分别是每个不同类的不同的属性和行为。下面以代码为例:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
此处为dog类,它包括名字和年龄两个属性,通过__init__()方法给属性name,age赋值(以下简述一下__init()方法)
__init__()
学过java的应该知道,该方法相当于构造方法,在python创建实例时自动执行不需手动调用,而且形参self是必须的,至于其他参数是可选的,如上例所示,name和age便是可有可无的
还接着上例分析,__init()方法将name和age赋值后,在下边定义了两个函数,函数在类中被称为方法,self引用自身是必选的,分别是小狗蹲下和打滚的两种行为
继承:
编写类时并非总是要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。
子类创建实例赋值时通过__init__()方法,并通过关键字super()调用
例如:
class Passenger_car():#定义客车类
def __init__(self,weight,operate):#相当于构造方法,用于赋值,python创建实例时自动调用
self.weight = weight#定义重量变量并赋值
self.operate = operate#定义操作对象并赋值
def out(self):#打印汽车属性的方法
print("客车的重量是:"+self.weight+','+"驾驶方法是:"+self.operate+'\n')#打印语句
sm_car = Small_car('125kg','踩油门')#创建小汽车实例并传值
sm_car.out()#调用小汽车对象的out方法
pas_car = Passenger_car('521kg','转动方向盘')#创建客车实例并传值
pas_car.out()#调用客车对象的out方法
class School_car(Passenger_car):
def __init__(self,weight,operate,mark):
super().__init__(weight,operate)
self.mark = '东风路28路公交车'
def out(self):
print("这是校车")
校车是客车的子类,它有不同于父类Passenger_car的属性mark,并重写了父类的out方法。
继承可完全理解为扩展以及区别,有了继承不会让我们编写程序时总是重复不必要的代码,减少工作量。
多态:
多态和Java程序的多态其实相差不大,多态即一种实物的多种形态,因为python和java不同的是,python不支持重载,而且python中多态体现的并不明显。继承中每个对象都有自己单独的方法,避免有重名的,如果我们创建实例时 要调用该方法,少则还好,如果是上百个上千个呢,此时多态便方便了我们不少。此时我们可以对象封装的一个函数中,在循环遍历每一个对象,调用方法,这种做法便节约了大量的时间和没必要的臃肿代码。