面向对象编程的核心概念:封装,抽象,多态、继承、组合
封装:
第一个概念:在面向对象编程中,对象将变量和方法集中在一个地方,即对象本身。
第二个概念:指的是隐藏类的内部数据,避免客户端代码直接进行访问。
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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!