当前位置 : 主页 > 编程语言 > python >

【Python】面向对象三大特性

来源:互联网 收集:自由互联 发布时间:2022-06-24
函数式编程和面向对象的对比 函数: 定义简单/调用简单 面向对象: 定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起 面向对象代码如何编写 class Foo: def __init__(self,name): self.nam
  • 函数式编程和面向对象的对比
    函数: 定义简单/调用简单
    面向对象: 定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起
  • 面向对象代码如何编写
  • class Foo:
    def __init__(self,name):
    self.name = name
    def detail(self,msg):
    print(self.name,msg)
    obj = Foo()
    obj.detail()

    可以先归类,再提取公共值到构造方法中

    #归类
    class File:
    def file_read(self,file_path):
    pass
    def file_update(self,file_path):
    pass
    def file_delete(self,file_path):
    pass
    #提取公共值
    class File:
    def __init__(self,file_path):
    self.file_path = file_path #各方法中的公共值放入__init__方法中,避免重复写
    def file_read(self):
    pass
    def file_update(self,file_path):
    pass
    def file_delete(self,file_path):
    pass
  • 面向对象三大特性:封装/继承/多态
  • (1)封装
    将相关功能(不同方法)封装到一个类中,

    class Message:
    def email(self):pass
    def msg(self):pass
    def wechat(self):pass

    将数据封装到一个对象中:

    class Person:
    def __init__(self,name,age,gender):
    self.name = name
    self.age = age
    self.gender = gender
    obj = Person('孙福来',18,'女')

    (2)继承

    class SuperBase:
    def f3(self):
    print('f3')

    class Base(SuperBase): # 父类,基类
    def f2(self):
    print('f2')

    class Foo(Base): # 子类,派生类

    def f1(self):
    print('f1')

    obj = Foo()
    obj.f1()
    obj.f2()
    obj.f3()
    # 原则:现在自己类中找,没有就去父类

    支持多继承(一般先找左/再找右),多继承遵守C3算法,多继承的目的是提高代码重用性,在找继承关系的时候,在类中self是谁的对象,从谁开始找
    (3)多态
    多种形态或多种状态
    鸭子模型,只要可以嘎嘎叫就是鸭子.

    Python
    # 由于python原生支持多态,所以没有特殊性.

    class Foo1:
    def f1(self):
    pass

    class Foo2:
    def f1(self):
    pass

    class Foo3:
    def f1(self):
    pass


    def func(arg): #参数arg是一个对象,随便传入一个对象,只要有f1方法即可
    arg.f1()

    obj = Foo1() # obj= Foo2() obj = Foo3()
    func(obj)


    上一篇:【Python】md5加密
    下一篇:没有了
    网友评论