zoukankan      html  css  js  c++  java
  • Python 面向对象的核心概念汇总

    面向对象编程的核心概念:封装,抽象,多态、继承、组合

    封装:

    第一个概念:在面向对象编程中,对象将变量和方法集中在一个地方,即对象本身。

    第二个概念:指的是隐藏类的内部数据,避免客户端代码直接进行访问。

     1 class Data:
     2     def __init__(self):
     3         self.list1=[22,33,44,55,66]
     4
     5     def chang_list(self,index,num):
     6         self.list1[index]=num
     7
     8 data1=Data()
     9 data1.list1[0]=100
    10 print(data1.list1)
    11
    12 data2=Data()
    13 data2.chang_list(0,100)
    14 print(data2.list1)

    抽象:

    它是指剥离事物的诸多特性,使其只保留最基本的物质的过程。在面向对象编程中,使用类进行对象建模时就会用到抽象的技巧。

     1 import abc
     2 class Animal(metaclass=abc.ABCMeta):
     3    @abc.abstractmethod #抽象的对象方法
     4    def sound(self):
     5        pass
     6    @abc.abstractclassmethod#抽象的类方法
     7    def test1(cls):
     8        pass
     9    @abc.abstractstaticmethod#抽象的静态方法
    10    def test2(self):
    11        pass
    12
    13 class Dog(Animal):
    14    def sound(self):
    15        print("wang wang")
    16
    17    @classmethod
    18    def test1(cls):
    19        print("class of method")
    20
    21    @staticmethod
    22    def test2():
    23        print("static of method")
    24
    25 dog=Dog()
    26 dog.sound()
    27 dog.test1()
    28 Dog.test1()
    29 dog.test2()
    30 Dog.test2()

    继承:

    1)、将公共的属性和方法放到父类中,自己只考虑特有的属性和方法。

    2)、覆盖父类的方法即重写父类方法,在运行中只会调用子类中重写的方法不用调用父类中的方法。

    3)、子类拥有一个父类叫作单继承,子类可以拥有多个父类,并且具有所有父类的属性和方法。

     1 class Student:
     2    def study(self):
     3        print("学生要学习")
     4    def practice(self):
     5        print("学习完成要练习")
     6
     7 class HighStudent(Student):
     8    def study_compute(self):
     9        print("高中同学还要学习计算机")
    10
    11 hs=HighStudent()
    12 hs.study()
    13 hs.practice()
    14 hs.study_compute()

    多态:

    1)、指的是为不同的基础形态(数据类型)提供着接口的能力,接口指的是函数和方法。

    2)、顾名思义,多态就是多种表现形态的意思,它是一种机制,一种能力,而非某个关键词。它在类的继承中得以实现,在类的方法调用中得以体现。

    3)、多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式。

    4)、多态以封装和继承为前提,不同的子类对象调用相同的方法,产生不同的执行效果。它可以增加代码的灵活度,以继承和重写父类的方法为前提,调用方法不会影响到类的内部设计

     1 class Animals(object):
     2    def __init__(self,name):
     3        self.name=name
     4    def eat(self):
     5        print(self.name+" is eating")
     6 class Cat(Animals):
     7    def __init__(self,name):
     8        super(Cat, self).__init__(name)
     9 class Pig(Animals):
    10    def __init__(self,name):
    11        super(Pig, self).__init__(name)
    12
    13 class Person():
    14    def feedAnimal(self,animal):
    15        animal.eat()
    16
    17 cat=Cat("tom")
    18 pig=Pig("peiqi")
    19 tony=Person()
    20 tony.feedAnimal(cat)
    21 tony.feedAnimal(pig)

    组合:

    1)、通过组合技巧将一个对象作用变量保存在另一个对象中,可以模拟拥有关系。

    2)、它是一种将对象或类组合成更复杂的数据结构或构件实现的方法。

    3)、在组合中,一个对象可用于调用其他模块中的成员函数,这样一来,无需通过继承就可以实现基本功能的跨模块调用。

     1 class Monkey():
     2    def __init__(self,name,owner):
     3        self.name=name
     4        self.owner=owner
     5
     6 class Persons():
     7    def __init__(self,name):
     8        self.name=name
     9
    10 mike=Persons("mike")
    11 mickMouse=Monkey("goldeMonkey",mike)
    12 print(mickMouse.owner.name)
    13
    14 class A(object):
    15    def a1(self):
    16        print("a1")
    17 class B(object):
    18    def b1(self):
    19        print("b1")
    20        A().a1()
    21 bb=B()
    22 bb.b1()

    总结:

        今天和大家分享的是面向对象编程的核心概念:封装,抽象,多态、继承、组合,可以结合代码示例本地去运行着感受这些概念的含义。

    欢迎关注【无量测试之道】公众号,回复【领取资源】,
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    创意工坊pkg食用
    wordpress添加备案号出现乱码
    「Azure」数据分析师有理由爱Azure之四-Azure SQL的实操
    「Azure」数据分析师有理由爱Azure之三-对照Sqlserver学Azure
    「Azure」数据分析师有理由爱Azure之二-立即申请帐号开始学习之旅
    「Azure」数据分析师有理由爱Azure之一-Azure能带给我们什么?
    「Sqlserver」数据分析师有理由爱Sqlserver之十-Sqlserver自动化篇
    「Sqlserver」数据分析师有理由爱Sqlserver之九-无利益关系推荐Sqlserver书单
    「Sqlserver」数据分析师有理由爱Sqlserver之八-最刚需的数据导入导出功能-导出篇
    「Sqlserver」数据分析师有理由爱Sqlserver之七-最刚需的数据导入导出功能-导入篇
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14349418.html
Copyright © 2011-2022 走看看