专栏首页python3Python学习 :面向对象 -- 三大

Python学习 :面向对象 -- 三大

面向对象的三大特性

一、封装

把数据、值、变量放入到对象中

构造方法 _init_方法

特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤:

1、创建对象

2、通过对象执行类中的一个特殊方法(_init_方法)

class info:
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.gender = '男'
    def show(self):
        print(self.name,self.age,self.gender)

alex = info('alex',20)
alex.show()
mike = info('mike',23)
mike.show()
===>alex 20 男
===>mike 23 男

二、继承

1、继承

   -- 子类继承父类,或称派生类继承基类

class GrandFather:
    def plus(self):
        print("添加")

class Father(GrandFather):     # 父类(基类)
    def add(self):
        print("增加")
    def delete(self):
        print("删除")

class Son(Father):  # 子类(派生类)
    def get(self):
        pass

s = Son()
s.add()
s.plus()
===>增加
===>添加

2、重写

      -- 防止执行父类中的某些方法

class Father:     # 父类(基类)
    def add(self):
        print("父类中的增加")
    def delete(self):
        print("父类中的删除")

class Son(Father):  # 子类(派生类)
    def delete(self):
        print("子类中的删除")  # 默认不再执行父类中的方法

s = Son()
s.add()
s.delete()  # 此时子类不再继承父类中的delete方法,而是调用子类自己的方法
===>父类中的增加
===>子类中的删除

3、扩展

      -- 即执行父类中的方法,也执行子类自己的方法

class RequestHandler:
    def get(self):
        print("父类中的获取")
class BaseRequest(RequestHandler):
    def get(self):
        super(BaseRequest, self).get()  # 执行父类中的方法
        #RequestHandler.get(self) 与super方法效果一样,但更推荐使用euper方法
        print("子类中的获取")

obj = BaseRequest()
obj.get() # 此时方法会执行父类中的方法,再执行子类的方法
===>父类中的获取
===>子类中的获取

4、多继承

      -- 子类会根据左侧优先原则,在第一个父类中寻找方法,在找不到的情况下在去父类的父类中寻找

      -- 当父类有同一个根时,根会在最后才执行

class Base:
    def a(self):
        print('Base')

class F0(Base):
    def a1(self):
        print('F0')

class F1(F0):
    def a1(self):
        print('F1')

class F2(Base):
    def a(self):
        print('F2')

class S(F1,F2):
    pass

obj = S()
obj.a()
===> F2

三、多态

  python 原生即为多态,不需要过多进行处理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python_类的继承

    1.类的继承关系和生活中父亲、儿子、孙子之间的关系一样,Python中若A类继承B类,则A类称之为子类,B类称之为父类(也称为基类)。 2.类的继承方式分为:单...

    py3study
  • Python -- abc module

    检查子类是否被确认为ABC的子类。你也可以自己定制一个issubclass方法,这样就不需要再调用register()了。这个方法可以返回Ture,False或...

    py3study
  • python学习32(面向对象_3)

    py3study
  • Python_类的继承

    1.类的继承关系和生活中父亲、儿子、孙子之间的关系一样,Python中若A类继承B类,则A类称之为子类,B类称之为父类(也称为基类)。 2.类的继承方式分为:单...

    py3study
  • selenium+python自动化90-多线程生成报告(BeautifulReport)

    前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生产一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完...

    上海-悠悠
  • Python学习(七)---- 面向对象学习(类)

    原文地址: https://blog.csdn.net/fgf00/article/details/52449707 编辑:智能算法,欢迎关注!

    智能算法
  • python中子类调用父类的初始化方法

    http://bestchenwu.iteye.com/blog/1044848

    py3study
  • Python_子类调用父类的方法

    1.方式一 子类调用父类的方法,包含2中形式的调用。一种形式是在类内部通过继承的方式调用父类的方法,另外一种形式是子类实例化后之后通过继承的方式来调用父类的方法...

    py3study
  • 爬虫养成记--千军万马来相见(详解多线程)

    本文由图雀社区[1]成员 灿若星空[2] 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术教程,予力编程行业发展。

    一只图雀
  • python服务端多进程压测工具

    本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景...

    用户1225216

扫码关注云+社区

领取腾讯云代金券