您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python四大特性(封装,继承,重写,多态)

时间:2022-07-06 09:38:26  来源:  作者:至尊小狸子

继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基类,新的类称为子类或派生类。通过继承不仅可以实现代码的重用,还可以理顺类与类之间的关系。

重写:父类的成员都会被子类继承,当父类中某个方法不完全适用子类,就需要在子类中重新父类方法。在子类中如果定义了__init__()方法时,子类是不会自动调用父类的__init__()方法,此时如果不手动添加,运行代码就会报错。需要在子类使用super()函数调用父类的__init__()方法,而且必须在首行。

封装:提高程序安全性,将属性、类包装到类中。Python/ target=_blank class=infotextkey>Python 中没有专门到修饰符用于属性到私有,如果属性不希望在类对象外部被访问,可以使用两个'_'。

多态:让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。可以理解为一个事物的多种形态。调用同一个函数,传入不同的参数,实现不同的功能。

代码中还写了一些特殊的方法和特殊属性,可以注意下!!!

'''
封装: 提高程序安全性,将属性、类包装到类中
python 中没有专门到修饰符用于属性到私有,如果属性不希望在类对象外部被访问,可以使用两个'_'

'''
class Studen:
    def __init__(self,name,age):
        self.name = name
        self.__age = age   #不希望age在外部使用,前面加两个__

    def show(self):
        print('nihal',self.name,self.__age)

    def __run(self):   #私有方法
        pass
st = Studen('za',18)
st.show()

print(st.name)
# print(st.age)   #不能访问age,因为age私有,但可以通过下面访问

print(dir(st))   #可以查看属性和方法
print(st._Studen__age)  #在类但外部可以通过,_Studen__age这种方式访问

'''
继承:提高代码复用性
class  子类名(父类1,父类2,父类3.....):
    pass

如果一个类没有继承任何一个类,则默认继承object
【注意】在继承中,子类但构造函数必须调用父类但构造函数
'''

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def info(self):
        print('姓名{0},年龄{1}'.format(self.name,self.age))

class Student(Person):
    def __init__(self,name,age,score):
        super().__init__(name,age)   #子类继承父类,在构造函数中必须用super调用父类构造函数
        self.score = score
    def run(self):
        print(f'score is {self.score}')
    def info(self):         #重写父类方法
        super().info();     #调用父类方法
        print(f'score is {self.score}')

st = Student('ge',29,100)
st.info()


'''
重写父类方法,super().父类方法
'''
st.info()    #重写之后,先调用自己但方法

'''
object类: 
'''

class Teacher(Person):
    def __init__(self):
        pass
    def __str__(self):
        print("重写此方法,返回对类对象但描述")

'''
多态:具有多种形态,
不知道一个变量所引用但对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象但类型,动态决定调用哪个对象中但方法

JAVA是静态语言,其实现多态的三个必要条件
1、继承
2、方法重写
3、父类引用指向子类对象

动态语言崇尚"鸭子类型",只关注对象行为,不必关注对象
'''

class Animal:
    def eat(self):
        print('动物会吃')

class Dog(Animal):
    def eat(self):
        print('狗吃肉')
class Cat(Animal):
    def eat(self):
        print('猫吃鱼')
class Person:
    def eat(self):
        print('人吃五谷杂粮')
    def __add__(self, other):
        return  self.name +other.name

#定义一个函数
def fun(obj):
    obj.eat()

fun(Cat())
fun(Dog())
fun(Animal())
fun(Person())  #多态

'''
特殊方法和特殊属性
属性:__dict__: 获得对象或实例对象所绑定的索引属性和方法的字典
属性:__len__():通过重写__len__()方法,让内置函数len()的参数可以是自定义类型
方法:__add__():通过重写__add__()方法,可是自定义对象具有'+'功能
方法:__new__():用于创建对象
方法:__init__():创建的对象进行初始化
'''

p = Person()
print(p.__dict__) #实例对象的
print(Person.__dict__)   #类的
print(p.__class__)   #对象所属的类
c = Cat()
print(Cat.__base__) #父类元素,如果有多个父类,用bases

a=10
b=30
c = a+b
print(c)
c = a.__add__(b)
print(c)

p1 = Person()
p1.name = 'zhang'
p2 = Person()
p2.name = 'san'

print(p1.__add__(p2))
print(p1+p2)   #因为在Person类中写了__add__()方法,才能使用相加

'''
__new__与__init__
__new__ : 在前创建对象
__init__:对已经创建的对象初始化
'''


class Car:
    def __new__(cls, *args, **kwargs):
        pass
    def __init__(self):
        pass


Tags:python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
导读:微服务遵循领域驱动设计(DDD),与开发平台无关。Python 微服务也不例外。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易。本文字数:12786,阅读时长大约: 15...【详细内容】
2022-10-20  Tags: python  点击:(2)  评论:(0)  加入收藏
我知道我的绝大多数订阅者都是使用Windows操作系统的,别的操作系统应该使用的很少,如果有,比如Linux使用者,我不用写,他们自己能搞定安装问题。在开始我们的正式编程之前,我们先...【详细内容】
2022-10-18  Tags: python  点击:(11)  评论:(0)  加入收藏
语言的优劣之争从来都是个永恒的话题,也是个容易引火上身的问题,经常讨论过激就会“擦枪走火”甚至可能会引发一场铁杆粉丝之间的“战争”。如果您之前熟悉VBA,或了解一些VB语...【详细内容】
2022-10-13  Tags: python  点击:(12)  评论:(0)  加入收藏
Python可以玩的方向有很多,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。因为Python是动态脚本语言,所以代码逻辑比Java...【详细内容】
2022-10-10  Tags: python  点击:(11)  评论:(0)  加入收藏
关于日期处理,Python 提供了许多库,例如标准库 datetime、第三方库 dateutil、 Arrow 等。在这篇文章中,我想介绍我个人最喜欢的库pendulum,它使用非常方便,它可以满足任何日期...【详细内容】
2022-10-10  Tags: python  点击:(16)  评论:(0)  加入收藏
在本文中,我将我的一些笔记变成了20 个面试问题,涵盖了数据结构、核心编程概念和 Python 最佳实践。希望你能完成其中的一些并重温你的 python 技能。事不宜迟,让我们直接进...【详细内容】
2022-10-08  Tags: python  点击:(19)  评论:(0)  加入收藏
Android应用自适应多分辨率解决方案2022新版Scrapy打造搜索引擎 畅销4年的Python分布式爬虫download:https://www.51xuebc.com/thread-494-1-1.html1.第一步是创建多个布局文...【详细内容】
2022-10-07  Tags: python  点击:(22)  评论:(0)  加入收藏
一、操作文件的函数/方法在Python中要操作文件需要记住1个函数和3个方法:序号函数/方法说明01open打开文件,并且返回文件操作对象02read将文件内容读取到内存03write将制定内...【详细内容】
2022-10-07  Tags: python  点击:(48)  评论:(0)  加入收藏
自己电脑上有完整的python环境,所以偶尔写个小工具什么的都很easy,直接命令行run一波就OK,但是如果需要再朋友的电脑上运行,帮别人写了一个小工具,他没有运行环境,就很麻烦。不能...【详细内容】
2022-10-06  Tags: python  点击:(26)  评论:(0)  加入收藏
上期有提到自己用Python编写了检测本机ipv6的小程序,本期就详细讲解一下实现过程,大家也可以在此基础上修改,达到自己的目的第一步导入需要用到的库import smtplibfrom email.m...【详细内容】
2022-10-03  Tags: python  点击:(23)  评论:(0)  加入收藏
▌简易百科推荐
导读:微服务遵循领域驱动设计(DDD),与开发平台无关。Python 微服务也不例外。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易。本文字数:12786,阅读时长大约: 15...【详细内容】
2022-10-20    Linux   Tags:Python   点击:(2)  评论:(0)  加入收藏
我知道我的绝大多数订阅者都是使用Windows操作系统的,别的操作系统应该使用的很少,如果有,比如Linux使用者,我不用写,他们自己能搞定安装问题。在开始我们的正式编程之前,我们先...【详细内容】
2022-10-18  李保银  今日头条  Tags:Python开发   点击:(11)  评论:(0)  加入收藏
Python可以玩的方向有很多,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。因为Python是动态脚本语言,所以代码逻辑比Java...【详细内容】
2022-10-10  Python大数据分析  今日头条  Tags:Python脚本   点击:(11)  评论:(0)  加入收藏
关于日期处理,Python 提供了许多库,例如标准库 datetime、第三方库 dateutil、 Arrow 等。在这篇文章中,我想介绍我个人最喜欢的库pendulum,它使用非常方便,它可以满足任何日期...【详细内容】
2022-10-10  喜欢编码的社畜  今日头条  Tags:pendulum   点击:(16)  评论:(0)  加入收藏
在本文中,我将我的一些笔记变成了20 个面试问题,涵盖了数据结构、核心编程概念和 Python 最佳实践。希望你能完成其中的一些并重温你的 python 技能。事不宜迟,让我们直接进...【详细内容】
2022-10-08  喜欢编码的社畜  今日头条  Tags:Python   点击:(19)  评论:(0)  加入收藏
Android应用自适应多分辨率解决方案2022新版Scrapy打造搜索引擎 畅销4年的Python分布式爬虫download:https://www.51xuebc.com/thread-494-1-1.html1.第一步是创建多个布局文...【详细内容】
2022-10-07  石哥学长  网易号  Tags:Scrapy   点击:(22)  评论:(0)  加入收藏
一、操作文件的函数/方法在Python中要操作文件需要记住1个函数和3个方法:序号函数/方法说明01open打开文件,并且返回文件操作对象02read将文件内容读取到内存03write将制定内...【详细内容】
2022-10-07  python自学网  今日头条  Tags:Python   点击:(48)  评论:(0)  加入收藏
自己电脑上有完整的python环境,所以偶尔写个小工具什么的都很easy,直接命令行run一波就OK,但是如果需要再朋友的电脑上运行,帮别人写了一个小工具,他没有运行环境,就很麻烦。不能...【详细内容】
2022-10-06  大橙子打游戏  掘金  Tags:Python   点击:(26)  评论:(0)  加入收藏
上期有提到自己用Python编写了检测本机ipv6的小程序,本期就详细讲解一下实现过程,大家也可以在此基础上修改,达到自己的目的第一步导入需要用到的库import smtplibfrom email.m...【详细内容】
2022-10-03  迷之折腾  今日头条  Tags:python程序   点击:(23)  评论:(0)  加入收藏
今天给大家分享一波儿 Python学习重点,超级全面!由于总结了太多的东西,所以篇幅有点长,这也是“缝缝补补”总结了好久的东西。...【详细内容】
2022-09-30  联动企业实验室  搜狐号  Tags:Python   点击:(23)  评论:(0)  加入收藏
站内最新
站内热门
站内头条