首页 > 代码库 > Python15-07面向对象

Python15-07面向对象

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 多态

多态特性:一种接口,多种实现

 

 

 



null


附件列表

     

    Python15-07面向对象