python面向对象三大特性,各有什么用处_面向对象语言三大特性

python面向对象三大特性,各有什么用处_面向对象语言三大特性python面向对象三大特性继承,封装,多态1.封装体现在两个方面:将同一类方法封装到了一个类中将数据封装到对象中,在实例化对象时,可以通过__init__初始化方法在对象中封装一些数据,便于以后使用2.继承子类继承父类中的方法和类变量(不是拷贝一份,父类还是属于父类,子类可以继承而已)父类又称基类子类又称派生类classBase:deffunc(self):print(“base”)#Son继承BaseclassSon(Base):

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

python面向对象三大特性

继承,封装,多态

1.封装

体现在两个方面:

  • 将同一类方法封装到了一个类中
  • 将数据封装到对象中,在实例化对象时,可以通过__init__初始化方法在对象中封装一些数据,便于以后使用

2.继承

子类继承父类中的方法和类变量(不是拷贝一份,父类还是属于父类,子类可以继承而已)

  • 父类又称基类
  • 子类又称派生类

在这里插入图片描述

class Base:
    def func(self):
        print("base")
#Son继承Base
class Son(Base):
    def show(self):
        print("son")
s1=Son()
s1.show()
#s1调用func(),自己没有,找父类
s1.func()

Jetbrains全家桶1年46,售后保障稳定

在这里插入图片描述

小结

  • 执行对象.方法时,优先去当前对象所关联的类中找,没有再去父类找
  • python支持多继承:先继承左边,在继承右边
  • 确认self到底是谁?去self对应的那个类中去获取成员,没有就按照继承关系向上查找
  • 继承存在的意义:将公共的方法提取到父类中,增强代码的重用性
  • 继承方式
    • 继承
    • 多继承
  • 调用类中的成员,规则
    • 优先在自己的类中找,没有去父类找
    • 存在多继承(多个父类),先左后右

3.多态

多态,字面意思就是多种形态

由于python对数据类型没有任何限制,所以他天生支持多态

def func(arg):
    v1=arg.copy()
    print(v1)
func(['wxy'])
func([1,2,3])
class Email(object):
    def send(self):
        print("发邮件")
class Message(object):
    def send(self):
        print("发短信")
def func(arg):
    v1=arg.send()
    print(v1)
v1=Email()
#将v1对象以参数的形式传入给func()函数
func(v1)
v2=Message()
#将v2对象以参数的形式传入给func()函数
func(v2)
# 发邮件
# None
# 发短信
# None

在程序设计中,鸭子类型(duck typing)是动态类型的一种风格,在鸭子类型中,关注点在于对象的行为,能做什么;而不是关心对象所属的类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209847.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • .net 读书笔记

    好书不能只读一遍,这两天又翻看了一遍《你必须知道的.NET》,重温了下基础,重温了下经典,简单记录了下来。内存分配:CLR管理内存的区域,主要有三块,分别为:线程的堆栈,用于分配值类型实例。堆栈

    2021年12月23日
    42
  • 02_ElasticSearch索引操作总结归纳

    02_ElasticSearch索引操作总结归纳

    2021年7月11日
    99
  • centos7桌面网络配置_Centos7网络配置+图形界面设置

    centos7桌面网络配置_Centos7网络配置+图形界面设置一.查看网络地址:centos7取消了ifconfig命令,使用ipaddr命令查看IP地址二.配置网络用VirtualBox安装的CentOS7,安装完成后,发现无法上网,于是到网上查了一下,经过以下几步即可上网。1.找到以太网卡配置文件ifcfg-enp**文件,过面的数字好像是随机生成的。2.使用Root打开并编辑些文件,将onboot的”no”改为“yes”,然后重启网络。最后输入:…

    2022年5月23日
    258
  • 十进制小数转为二进制小数方法是什么_二进制转十进制计算题

    十进制小数转为二进制小数方法是什么_二进制转十进制计算题首先需要明确一点就是并不是所有的十进制小数都能用二进制数精确表示的。这是由于进制的局限性导致的。例如三进制的0.1,用十进制表示是无限循环小数0.333333…..十进制的小数转换为二进制的方法为十进制小数乘2,取出整数作为二进制小数第一位,余下的小数再乘以2,取出整数作为小数第二位,如此反复,直至余下的小数为0。例:十进制0.3750.375*2=0.75————0(0.75的整数部分为0)0.75*2=1.5————1(1.5的整数…

    2022年9月24日
    2
  • mysql删除外键约束

    mysql删除外键约束1.查看数据库表创建的sql语句showcreatetablevip2.查看外键的约束名CREATETABLE`vip`(`id`int(11)NOTNULLAUTO_INCREMENT,`address`varchar(255)DEFAULTNULL,`code`varchar(255)DEFAULTNULL,

    2022年6月24日
    27
  • Java练习:用Java语言编写九九乘法表[通俗易懂]

    Java练习:用Java语言编写九九乘法表[通俗易懂]//java程序编写九九乘法表:下三角publicclassTest1{ publicstaticvoidmain(String[]args){ for(inti=1;i<=9;i++){ for(intj=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)+""); } System.o…

    2022年7月15日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号