博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
17面向对象--三大特性
阅读量:5121 次
发布时间:2019-06-13

本文共 2279 字,大约阅读时间需要 7 分钟。

python的三个特性:封装、继承、多态

  封装:

    将相关功能封装到一个类

    将数据封装到一个对象(__init__)

# 1、功能的封装class Loy2:    def testmethod1(self, name, data, gender):        data = '%s%s%stest1' % (name, data, gender)        print(data)    def testmethod2(self, name, data, gender):        data = '%s%s%stest2' % (name, data, gender)        print(data)    def testmethod3(self, name, data, gender):        data = '%s%s%stest3' % (name, data, gender)        print(data)obj1 = Loy2()obj1.testmethod1('别人', '明天', '上班')obj1.testmethod2('别人', '明天', '上班')obj1.testmethod3('别人', '明天', '上班')# 2、优化版本(参数的打包)class Loy:    def __init__(self, a, b, c):        self.n1 = a        self.n2 = b        self.n3 = c    def testmethod1(self):        data = '%s%s%stest1' % (self.n1, self.n2, self.n3)        print(data)    def testmethod2(self):        data = '%s%s%stest2' % (self.n1, self.n2, self.n3)        print(data)    def testmethod3(self):        data = '%s%s%stest3' % (self.n1, self.n2, self.n3)        print(data)obj = Loy('我自己', '今天', '去打牌')obj.testmethod1()obj.testmethod2()obj.testmethod3()

  继承:

    继承的目的是为了复用

    多继承:

      不同于其他语言,在python中,一个派生类可以继承多个基类,多继承(先找左,再找右),多继承可以提高复用性

class Base1:    def f1(self):        print('base1.f1')    def f2(self):        print('base1.f2')class Base2:    def f1(self):        print('base2.f1')    def f2(self):        print('base2.f2')    def f3(self):        print('base2.f3')        self.f1()class Foo(Base1, Base2):    def f0(self):        print('foo.f0')        self.f3()obj = Foo()obj.f0()

      以上代码打印结果为

      

      当运行obj对象的f0方法时,首先在本身的Foo类中寻找f0打印第一行。然后f0中调用了f3,f3在Foo类中没有,然后在继承

    的Base1类中找f3,没找到。然后在Base2类中找f3。打印第二行。然后f3调用了f1(注意:此时self.f3()中的self指向依旧是obj)。

    然后Foo类中没有找到f1,然后在Base1类中找到,打印第三行,至此结束。

      

  多态:

    # 关于多态,网上的说法众说纷纭,Google了半天。发现大佬们说的都过于抽象。鉴于我自己还不是个老油条。后续醍醐灌顶之后再补充。

    多种形态或者多种状态,多态可以增加代码的灵活度。

    鸭子模型:在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的

    

class Base(object):    def fun(self):        print('这是一个基类')class Foo(Base):    def fun(self):        Base.fun(self)        print('这是派生类1')class Foo2(Base):    def fun(self):        Base.fun(self)        print('这是派生类2')a = Base()b = Foo()c = Foo2()a.fun()b.fun()c.fun()'''打印结果如下:这是一个基类这是一个基类这是派生类1这是一个基类这是派生类2'''

 

    以上就是个人对于python基础三大特性的了解。如有问题,欢迎指正。

    

转载于:https://www.cnblogs.com/cbslock/p/11220018.html

你可能感兴趣的文章
桐桐的贸易--WA
查看>>
LightTools.v5.1_完整好用版本\
查看>>
javascript中的变量提升
查看>>
获取AWR报告
查看>>
小程序组件
查看>>
grunt学习2
查看>>
IDEA中web项目maven项目手动打war包的方式
查看>>
Spring Boot 初体验(6)Spring Boot JdbcTemplate
查看>>
Wpf Page间跳转传参数 And Window To Page
查看>>
Hammer.js
查看>>
Node.js Error: Cannot find module express的解决办法
查看>>
并发 and 并行
查看>>
Linux命令之mkdir
查看>>
垃圾回收
查看>>
Java之jdk命令行工具详解
查看>>
【转载】如何面试程序员?
查看>>
硬盘提示无法访问RAW,里面的数据怎么寻回
查看>>
MySQL
查看>>
Java虚拟机之Java内存区域
查看>>
(专题一)06 MATLAB的算术运算
查看>>