python面向对象之封装,继承,多态
2024-08-24 14:56:56
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。在python的类中,封装即通过__init__函数将数据赋给对应的变量进行保存,便于其他地方使用
所以,在使用面向对象的封装特性时,需要:
将内容封装到某处
从某处调用被封装的内容
class Car(object):
'Car'
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price = price
def run(self):
print("%s的%s正在跑" % (self.color, self.name))
car = Car('大奔', '黑色', '80万')
car.run()
car2 = Car('法拉利', '红色', '1000万')
car2.run()
黑色的大奔正在跑
红色的法拉利正在跑
通过__init__构造函数给变量赋值,使成员函数可以使用初始化的变量。达到将数据的方法封装的目的。
继承。。。。
之前说过我们可以把狗抽象成一个类,那么,我们是不是也可以把猫抽象成一个类?再看,猫和狗是不是也具备一些相同的特征?
继承
比如,跑,叫,吃东西。。。那把这两者结合是不是还可以再抽象出一个新的类,比如说Animal这个类?
class Animal(object):
'Animal'
def __init__(self):
print("Animal 的__init__方法")
def run(self):
print("running")
def shout(self):
pass
class Dog(Animal): # 继承Animal
'Dog'
def __init__(self):
print("Dog 的__init__方法")
def shout(self):
print("汪汪汪")
class Cat(Animal): # 继承Animal
'Cat'
def shout(self):
print("喵喵喵")
dog = Dog()
cat = Cat()
运行结果如下
Dog 的__init__方法
Animal 的__init__方法
通过class 类名(要继承的类的类名)即可实现继承。可以发现,调用了两次__init__方法,但是在Cat类里面没有写__init__函数,那为什么会出现这样的情况呢?继承,因为Cat继承了Animal类,所以,会出现上面这种情况,虽然Dog类也继承了Animal类,但是在Dog类中我们定义了__init__函数,或者说是重写了__init__函数,因此,Dog类在实例化时不会调用父类的构造方法,而是执行自己的构造方法。那么如果我们自己不仅想重写构造函数而且还想要继承父类的构造函数,那如何让做呢?
第一种方式:父类名.__init__(self)
第二种方式:super(自己的类名,self).__init__()
def __init__(self):
print("Cat 的__init__方法")
# 第一种、调用超类的构造方法
Animal.__init__(self)
# 第二种、super函数返回一个super对象,解析过程自动查找所有的父类和父类的父类,当前类和对象可以作为super函数的参数使用,调用函数返回的方法是超类的方法。使用super函数如果子类继承多个父类只许一次继承,使用一次super函数即可。
super(Cat, self).__init__()
最新文章
- 提示用户升级浏览器代码 低于ie9的浏览器提示
- 【POJ 1273】Drainage Ditches(网络流)
- 20145315 《Java程序设计》实验五实验报告
- silverlight嵌套html不能输入中文问题
- 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
- Win7 扩容磁盘分区
- (Problem 4)Largest palindrome product
- mysql innobackupex备份工具
- ZeroMQ 的模式
- Linux的运行级别详细说明
- 141. 环形链表 [JS Undefined类型的运用]
- swagger2常用注解
- Android 组件的三种点击事件写法
- ps昏暗室内照片调成暖色光亮效果
- 牛客寒假算法基础集训营4 I题 Applese 的回文串
- javascript篇-typeof,instanceof,constructor,toString判断数据类型的用法和区别
- VLAN原理
- log4j 文件配置
- python scrapy cookies 处理
- python的三种字符串格式化方法