python面向对象开发详解

python面向对象开发详解

说到面向对象的开发思想,python同其他语言一样 都有封装,继承,多态的特点。

本文详细介绍python下的面向对象开发思想的应用

面向过程开发的简单案例

面向过程开发中,只是把每一个功能封装成函数,没有实现对函数的封装,代码复用率低,但运行效率高于面向对象,现在大多数开发采用面向对象开发,减少了代码量,我们只需要面向对象进行开发,不用对执行过程开发,能更好的实现我们的需求。

# 面向过程
def add_user():
   pass
def del_user():
   pass
def modify_user():
   pass
def query_user():
   pass
def show_all():
   pass
# 每个功能是一个函数  方法
def main():
   while True:
      print(
         '''----------------------------------------
            名片管理系统 V2.0
            1:添加名片
            2:删除名片
            3:修改名片
            4:查询名片
            5:显示所有的名片
            6:退出系统
   ---------------------------------------------------
         '''
      )
      operator = input('请输入需要执行的操作(数字即可)')
      if operator == '1':
         add_user()
      elif operator == '2':
         del_user()
      elif operator == '3':
         modify_user()
      elif operator == '4':
         query_user()
      elif operator == '5':
         show_all()
      elif operator == '6':
         break
main()

面向对象的三个特征

封装 :函数是对语句的封装 类是对函数和变量的封装

继承:类和类之间 可以手动建立父子关系 父类的属性和方法 字类也可以使用 父类也称为基类

多态: 是一种技巧 可以提升代码的灵活度

封装

将函数(方法)封装到类里面

class Person:
   # 规定人的一些属性
   def __init__(self,name,age,height):       # __init__(self,属性名1,[属性名2])定义属性
      self.name = name            # 属性值  self.属性=属性值
      self.age = age
      self.height = height
   # 定义方法
   def eat(self):
      print(self.name,'eat')
   def run(self):
      print(self.name,'run')

继承

python中的类可以继承 一个类可以继承多个类

继承单个类

创建父类Animal 由Dog,Student,Cat继承父类

继承后有父类的属性和方法 私有属性和方法不可继承

class Animal(object):
   def __init__(self,name,age):
      self.name = name
      self.age = age

   def sleep(self):
      print(self.name+'正在睡觉')

   def eat(self):
      print('eat')


class Dog(Animal):    # 继承Animal
   def bark(self):
      print(self.name+'正在狂吠')

class Students(Animal):
   def study(self):
      print(self.name+'正在学习')

class Cat(Animal):
   def eat_fish(self):
      print(self.name+'正在吃鱼')

继承多个类

## 继承多个类
class A(object):
   def demo_x(self):
      print('我是A类中的demo——x')

   def foo(self):
      print('我是A类的foo方法')


class B(object):
   def demo_y(self):
      print('我是B类中的demo_y')

   def foo(self):
      print('我是B中的foo')

class C(A,B):
   pass

c= C()
c.demo_x()
c.demo_y()
c.foo()       # 当两个类中都有同一个方法 默认前一个方法
print(C.__mro__)      # 查看C类中的调用方法顺序 (, , , )

多态

多态是对继承父类的子类进行重写方法和属性 可以理解为是继承+重构

子类重写父类的方法

在子类添加方法可以直接在子类中定义方法 需要重写父类的方法也是直接在子类中定义新方法 当调用方法时 首先调用子类中的方法 如果没有才调用父类的方法

有两种方法:

添加school,diver属性

在父类 name age 基础上 又增加了自己新的内容

  1. def __init__(self,name,age,school,diver):
    	Person.__init__(self,name,age)    #第一种
        self.school = school
    	self.diver = diver
    
  2. # 1.调用父类的方法名   父类名.方法名(self,参数列表)
    # 2.Person.__init__(self,name,age,新内容)
    # 使用super 直接调用父类的方法  推荐这种
    	def __init__(self,name,age,school,diver):
    		super(Student, self).__init__(name,age)			# 第二种
    		self.school = school
    		self.diver = diver
    

你可能感兴趣的:(小白程序员,python,面向对象开发,多态,python,编程语言,封装,面向对象编程)