Python面向对象的核心概念汇总
面向对象编程的核心概念:封装,抽象,多态、继承、组合
封装:第一个概念:在面向对象编程中,对象将变量和方法集中在一个地方,即对象本身。第二个概念:指的是隐藏类的内部数据,避免客户端代码直接进行访问。 1class 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 8data1=Data() 9data1.list1[0]=100 10print(data1.list1) 11 12data2=Data() 13data2.chang_list(0,100) 14print(data2.list1) 抽象:它是指剥离事物的诸多特性,使其只保留最基本的物质的过程。在面向对象编程中,使用类进行对象建模时就会用到抽象的技巧。 1import abc 2class 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 13class 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 25dog=Dog() 26dog.sound() 27dog.test1() 28Dog.test1() 29dog.test2() 30Dog.test2() 继承:
1)、将公共的属性和方法放到父类中,自己只考虑特有的属性和方法。
2)、覆盖父类的方法即重写父类方法,在运行中只会调用子类中重写的方法不用调用父类中的方法。
3)、子类拥有一个父类叫作单继承,子类可以拥有多个父类,并且具有所有父类的属性和方法。 1class Student: 2 def study(self): 3 print("学生要学习") 4 def practice(self): 5 print("学习完成要练习") 6 7class HighStudent(Student): 8 def study_compute(self): 9 print("高中同学还要学习计算机") 10 11hs=HighStudent() 12hs.study() 13hs.practice() 14hs.study_compute() 多态:
1)、指的是为不同的基础形态(数据类型)提供着接口的能力,接口指的是函数和方法。
2)、顾名思义,多态就是多种表现形态的意思,它是一种机制,一种能力,而非某个关键词。它在类的继承中得以实现,在类的方法调用中得以体现。
3)、多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式。
4)、多态以封装和继承为前提,不同的子类对象调用相同的方法,产生不同的执行效果。它可以增加代码的灵活度,以继承和重写父类的方法为前提,调用方法不会影响到类的内部设计 1class Animals(object): 2 def __init__(self,name): 3 self.name=name 4 def eat(self): 5 print(self.name+" is eating") 6class Cat(Animals): 7 def __init__(self,name): 8 super(Cat, self).__init__(name) 9class Pig(Animals): 10 def __init__(self,name): 11 super(Pig, self).__init__(name) 12 13class Person(): 14 def feedAnimal(self,animal): 15 animal.eat() 16 17cat=Cat("tom") 18pig=Pig("peiqi") 19tony=Person() 20tony.feedAnimal(cat) 21tony.feedAnimal(pig) 组合:
1)、通过组合技巧将一个对象作用变量保存在另一个对象中,可以模拟拥有关系。
2)、它是一种将对象或类组合成更复杂的数据结构或构件实现的方法。
3)、在组合中,一个对象可用于调用其他模块中的成员函数,这样一来,无需通过继承就可以实现基本功能的跨模块调用。 1class Monkey(): 2 def __init__(self,name,owner): 3 self.name=name 4 self.owner=owner 5 6class Persons(): 7 def __init__(self,name): 8 self.name=name 9 10mike=Persons("mike") 11mickMouse=Monkey("goldeMonkey",mike) 12print(mickMouse.owner.name) 13 14class A(object): 15 def a1(self): 16 print("a1") 17class B(object): 18 def b1(self): 19 print("b1") 20 A().a1() 21bb=B() 22bb.b1()
总结:
今天和大家分享的是面向对象编程的核心概念:封装,抽象,多态、继承、组合,可以结合代码示例本地去运行着感受这些概念的含义。
几个可以整蛊你朋友的Python程序来源httpsdream。blog。csdn。netPython能做很多无聊,但有意思的事情,例如接下来的一些案例。以下程序,不要发代码,要不实现不了你整蛊的目的。要打包成一个ex
别看华为现在按兵不动,家里的新奇专利可有的是众所周知,华为因为某些原因暂时在手机这块可能不会有太多大动作了,但是人家可是有的是新品想法,这点在华为许多公开的专利方案中就能体现得出。此前有消息称,华为或在开发一款采用六叶片机械
AppleWatch新系统感觉变化简单上手一下AppleWatch新系统感觉变化不大,但还是有。WatchOS8。0(测试版)首先在锁屏输入数字密码时有震动提示。正念模式分为沉思还有呼吸两个模式,算是新增功能吧,有
21年下半年电动汽车购买10大建议总结10个现阶段电动汽车购买建议,希望对待购电动车的朋友有用!1。广东以北的用户,一定选带热泵系统的车型,保障续航。有无热泵将直接严重影响冬季电动车使用体验。大众ID3搭载热泵系统
特斯拉的好日子还有几天?小米汽车完成注册,马斯克必须阻止要是说到电动汽车,相信屏幕前的朋友们第一时间想到的,应该都是像特斯拉这样的老牌电动汽车厂商吧?但其实特斯拉虽然在早年间久负盛名,但最近这几年的表现是真的让人不敢恭维。各种刹车失灵中
取消996以后,年轻人的好日子就要到来了现在有一个重要通知,就是Boss直聘快手字节跳动相继宣布取消大小周,互联网公司996工作制严重内卷被打破了,打工人可以恢复双休的日子,更加有时间的去提升自己。听到这个消息后,我们皓
如何投资加密货币而不冒太大风险?投资加密货币,风险相对小的方法,还是有的。不过,在投资过程中,我们也应该了解到,风险与收益,相当于影子和身子的关系。身子高了,影子自然也会长一些。反之则反。在这个基础之上,我们再去
又翻车?有媒体报道苹果iOS14。6,功耗和发热都变高了前段时间苹果公司推出iOS14。5,作为苹果iOS14发布半年来最大的一次更新,其因为给用户带来了APP透明追踪等不少全新功能,受到用户们的热烈欢迎,而且在升级之后的使用体验也非常
翻看了小米京东评论区,网友的评价给我整笑了这不618到了吗,小编近日想着换换手机。今年发布的手机相比过去有增无减,个人之前一直使用iPhone,今年想着支持一下国产,华为没货OV过于时尚有些不太符合我这个直男的口味,于是自
家里有必要换指纹门锁吗,为什么?我换了,最后认为这是换了个老奶奶。(哭)我也是在一次喝酒时,听到两个要好的同学哥们儿都换了这指纹锁,于是问怎么样好用不?都异口同声的答太好了,省了带钥匙了。而且人老易忘事,以前没换
图灵奖得主姚期智我对区块链技术很有兴趣,希望它造福人类图灵奖得主姚期智。视频截图在今天(2日)举行的浦江创新论坛区块链发展论坛上,图灵奖得主姚期智通过视频致辞。他表示自从中本聪提出比特币开始,到今天区块链已经成为各国研发的新科技。希望