python15 - day07 面向对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python15 - day07 面向对象相关的知识,希望对你有一定的参考价值。
1. 面向对象编程
1.1 简介
面向对象的三个特性:封装、多态、继承。
私有方法、私有属性
类变量、实例变量
面向过程编程:告诉计算机一步一步的要做什么。
面向对象编程的简单演示:
#定义一个类 class Dog: def __init__(self,name): #构造函数,在实例化时做一些类的初始化工作。 self.name = name #定义属性 def bulk(self): print("%s:汪汪汪" % self.name) d1 = Dog("陈") d2 = Dog("王") d3 = Dog("张") d4 = Dog("李") d1.bulk() d2.bulk() d3.bulk() d4.bulk()
执行结果:
C:\\Users\\liuxiaotao\\AppData\\Local\\Programs\\Python\\Python35-32\\python.exe C:/Users/liuxiaotao/Desktop/Python/code/day07/object_dog.py
陈:汪汪汪
王:汪汪汪
张:汪汪汪
李:汪汪汪
把一个类编程具体对象的过程,叫做实例化。
1.2 析构函数
在实例释放、销毁的时候自动执行的函数,通常做一些收尾工作,如关闭数据库连接等。如果需要关闭,可以手动del删除对象。
class people(object): def __init__(self,name,age,country="china"): self.name = name self.age = age self.country = country def eat(self): print("%s is eatting" % self.name) def __del__(self): print("%s is dead" % self.name) def sleepping(self): print("%s is sleepping" % self.name)
备注:该模块执行结束后,会自动执行析构函数,这里是打印一句话。
1.3 私有属性和私有方法
class people(object): def __init__(self,name,age,country="china"): self._name = name #私有属性 self.age = age self.country = country def _eat(self): #私有方法 print("%s is eatting" % self.name) def __del__(self): print("%s is dead" % self.name) def _sleepping(self): print("%s is sleepping" % self.name)
私有属性和私有方法只能在当前实例中进行调用,该模块以外的实例无法调用。
1.4 继承
# _*_ coding:utf-8 _*_ # Author :kaige class people:#(经典类写法) class people(object):(新式类写法) def __init__(self,name,age,country="china"): self.name = name self.age = age self.country = country def eat(self): print("%s is eatting" % self.name) def __del__(self): print("%s is dead" % self.name) def sleepping(self): print("%s is sleepping" % self.name) class men(people): def piao(self): #子类自己定义的方法 print("piaoing.......done") m1 = men("kaige",22) m1.eat() #继承父类的方法 m1.piao() #子类自己的方法 class people: def __init__(self,name,age,country="china"): self.name = name self.age = age self.country = country def eat(self): print("%s is eatting" % self.name) #def __del__(self): #print("%s is dead" % self.name) def sleepping(self): print("%s is sleepping" % self.name) class men(people): def piao(self): print("piaoing.......done") class women(people): def __init__(self,name,age,money): #给某个类单独添加属性 people.__init__(self,name,age,country="china") super(women,self).__init__(name,age,country="china")#第二种方法 self.money = money def brun(self): print("%s brunning......wiht %s done" % (self.name,self.money)) m1 = men("kaige",22) wo2 = women("xiaoqing",26,2000) m1.eat() m1.piao() print("%s come from %s" % (m1.name,m1.country)) wo2.brun()
1.5 多继承的优先原则
新式类和经典类的区别在于多继承的顺序问题。
继承原则有广度优先和深度优先两种原则:
- python3中都是广度优先
- python2中经典类是深度优先原则,新式类是广度优先原则
以上演示因为是python3,遵循广度有限的原则:
1.6 多态
多态特性:一种接口,多种实现
以上是关于python15 - day07 面向对象的主要内容,如果未能解决你的问题,请参考以下文章
2018-07-03-Python全栈开发day24-面向对象设计