简单了解了类和对象之后就可以,理解面向对象编程的特性了。
如下三大特性:
目录
封装
把数据和操作数据的方法存在一起,对外使用访问内部数据不会特别容易,使用类之后,需要通过对象才能调用类内部的属性和方法,减少代码之间的耦合性,不像面向过程,牵一发而动全身,较好维护。
就像这样,现在有一个帅哥或美女学会了做饭(接水、洗菜、烧水等等做饭的一个个步骤)把这些步骤(过程)封装起来叫做一个类Cook,当需要使用的时候,现在你就是对象,然后让它去做饭,当然记得表达感谢。
# 定义一个类,叫做厨师
class Cook(object):
def __init__(self, wash, fry):
self.wash_ingredient = wash
self.fry_ingredient = fry
# 定义一个洗菜方法
def Wash(self):
print(f'某个帅哥美女洗个{self.wash_ingredient}')
self.Fry()
# 定义一个炒菜方法
def Fry(self):
print(f'某个帅哥美女&#炒个{self.wash_ingredient+self.fry_ingredient}')
# 创建一个Cook类的对象,调用类的方法
yourself = Cook('番茄', '牛肉')
yourself.Wash()
继承
子类继承父类的属性和方法,可以扩展或重写父类的方法。
再定义一个子类TuDi,然后继承父类Cook的方法,然后根据对象的需求,进行扩展
class Cook(object):
def __init__(self, wash, fry):
self.wash_ingredient = wash
self.fry_ingredient = fry
def Wash(self):
print(f'某个帅哥美女洗个{self.wash_ingredient}')
self.Fry()
def Fry(self):
print(f'某个帅哥美女&#炒个{self.wash_ingredient + self.fry_ingredient}')
yourself = Cook('番茄', '牛肉')
yourself.Wash()
class TuDi(Cook):
def __init__(self, wash, fry):
super().__init__(wash, fry)
tudi = TuDi('土豆', '鸡肉')
tudi.Wash()
多态
实现子类重写父类同名方法,实现
class Cook(object):
def __init__(self, wash, fry):
self.wash_ingredient = wash
self.fry_ingredient = fry
def Wash(self):
print(f'某个帅哥美女洗个{self.wash_ingredient}')
self.Fry()
def Fry(self):
print(f'某个帅哥美女&#炒个{self.wash_ingredient + self.fry_ingredient}')
class TuDi(Cook):
def __init__(self, wash, fry):
super().__init__(wash, fry)
def Fry(self):
print(f'炒的{self.wash_ingredient + self.fry_ingredient}非常的美味啊&')
yourself = Cook('番茄', '牛肉')
yourself.Wash()
tudi = TuDi('土豆', '鸡肉')
tudi.Wash()