封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。在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__()

最新文章

  1. 提示用户升级浏览器代码 低于ie9的浏览器提示
  2. 【POJ 1273】Drainage Ditches(网络流)
  3. 20145315 《Java程序设计》实验五实验报告
  4. silverlight嵌套html不能输入中文问题
  5. 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
  6. Win7 扩容磁盘分区
  7. (Problem 4)Largest palindrome product
  8. mysql innobackupex备份工具
  9. ZeroMQ 的模式
  10. Linux的运行级别详细说明
  11. 141. 环形链表 [JS Undefined类型的运用]
  12. swagger2常用注解
  13. Android 组件的三种点击事件写法
  14. ps昏暗室内照片调成暖色光亮效果
  15. 牛客寒假算法基础集训营4 I题 Applese 的回文串
  16. javascript篇-typeof,instanceof,constructor,toString判断数据类型的用法和区别
  17. VLAN原理
  18. log4j 文件配置
  19. python scrapy cookies 处理
  20. python的三种字符串格式化方法

热门文章

  1. 学习路线 (转自 https://mp.weixin.qq.com/s/_FIGSda6wWL-5LXMQAk3IA )
  2. JS转换HTML转义符 [转]
  3. 你所不知道的printf函数
  4. python 虚拟环境相关命令
  5. Spring MVC的方法返回值和参数传递
  6. 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取
  7. win32窗口程序分析
  8. white-space
  9. MongoDB 副本集主从切换方法
  10. Oracle 修改SID --不建议修改