首页 > 编程语言 >Python_12 多继承与多态

Python_12 多继承与多态

时间:2023-04-24 22:33:19浏览次数:50  
标签:12 Python pypi 多态 simple 实例 参数 父类 属性

一、查缺补漏

  1. self和super的区别:self调用自己方法,super调用父类方法

当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找

而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。

  2. Alt+回车 下载包

  3. 国内源地址,和镜像有关

    清华:https://pypi.tuna.tsinghua.edu.cn/simple

    豆瓣:https://pypi.doubanio.com/simple/

    网易:https://mirrors.163.com/pypi/simple/

    阿里云:https://mirrors.aliyun.com/pypi/simple/

    腾讯云:https://mirrors.cloud.tencent.com/pypi/simple

二、多继承

  1. 概念:一个类继承多个类,该类就拥有了多个类的方法和属性(私有的方法和属性除外)

  2. 语法:class 子类(父类1,父类2):

  3. 子类调用父类的方法和属性:super()方法使用和普通方法使用都遵循子类 --- 父类1 --- 父类2的查找顺序

Super()没有办法更改类继承的查找顺序,还是按照上面查找顺序查找

    MRO表:表示类与类之间继承关系的图标,如果继承关系混乱有可能会报错

TypeError: Cannot create a consistent method resolution  order (MRO) for bases Alisa61, Alisa04

  4. 多继承原则:不要让父类一下子是子类一下是父类,不要相互继承

三、多态:多态是指一类事务有多种形态,跟据使用情况,传入不同的参数,实现不同的功能,用在接口上的多

一些事务等同于同名的方法,相同特性的名称在不同类中展示,再根据调用不同的类结果也各不相同

28  29  30  31  32  33  34  35  36  37  38  39  dem003  D: \python\python . exe  atisa  - class Atisa01:  def  class Atisa02:  def  def Alisa (a) :  Alisa(Atisa01)  "D: /2321YEAR/\jnYi/python/pytL

四、动态设置属性(动态设置属性,增、删、改、查、判断)

_ dict _获取对象的所有属性,在类中是指实例属性,使用时展示出来的结果形似字典

  1. setattr(参数1,参数2,参数3) 增加/修改属性

    这里需要注意参数一也就是对象如果是对实例化对象做增加修改,

    则是添加实例属性,如果对类本身增加修改,则是添加类属性

    参数1:对象

    参数2:属性的key

    参数3:属性的value

    属性存在就相当于修改

    属性不存在就相当于添加属性

- class Alisa01:  dem003  { ' name' :  28  29  30  31  32  33  34  35  - if  36  37  38  39  41  42  ' alisa 'Y  {'name': ' alisa', al isa  {'name': 'alisa', •alisa':  age = 18  def  print aaaaa")  def  self.name = '"atisa"  _ name _  alisa  ' __main_  = Alisaßl()  print (atisa . __dict__)  setattr(alisa, "alisa" , )  print (atisa . __dict__)  setattr(alisa, "alisa", )  print (atisa . __dict__)

  2. 接收值 = getattr(参数1,参数2,参数3) 获取/查询属性

    参数1:对象

    参数2:属性的key

    参数3:非必传,value的默认值

itches and Consoles  if  •alisa':  name': 'alisa',  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  class Alisa01:  age 18  def  print aaaaa")  def  setf.name = "atisa"  ' _main_  name  - Alisa01()  alisa -  print (atisa . __dict__)  setattr(alisa, "ausa" , )  print (atisa . __dict__)  res_l = getattr(atisa,"  ausa" , 110)  res = getattr(alisa, "bugu"  , 110)  print(res)  dem003  110

    当属性不存在的时候,会直接返回默认的value值,如果属性不存在,也没有设置value,会报错

    当属性存在就返回属性对应的value

    查询时可以查询类的其他属性,包括非实例属性(类属性)

if  ' alisa'}  'alisa', 'alisa':  28  29  30  31  32  35  36  37  38  39  class Alisa01:  age = 18  def  self. name  = "atisa"  name  ' _ maln  atisa Alisa01()  print (atisa . __dict__)  setattr(atisa, "alisa" , "NV)  print (atisa .__dict__)  res getattr(atisa, "age",  110)  print(res)  dem003  name':  name':  18

  3. delattr(参数1,参数2) 删除属性 只能删除类中的实例属性

    参数1:对象

    参数2:属性的key

28  29  30  31  32  33  35  36  37  38  39  49  41  42  •class Atisa01:  18  def :  print("aaaaa")  def :  self .name "alisa"  -if  name  ' _ maln  al isa = Alisa01()  print(alisa . __dict__)  setattr(atisa, "alisa" , "i*")  print (alisa . __dict__)  delattr(atisa, "alisa")  print (alisa . __dict__)  dem003  name': ' al isa ' }  'atisa':  { ' name' :  { ' name' :  • alisa' ,  • al isa ' }

  4. hasattr(参数1,参数2) 判断属性是否存在

    参数1:对象

    参数2:属性的key

    判断时可以判断类的其他属性,包括非实例属性(类属性),返回布尔值

    在参数1中放类名称可以查看类属性,在参数1中放类的实例化对象可以即查看类属性又查看实例属性

28  29  30  31  32  if  33  34  35  36  37  38  39  41  42  dem003  'atisa':  cuass Alisa€l:  age 18  def :  self . name = "ausa"  _ name _  ' __main_ '  atisa Alisaol()  setattr(alisa, "alisa" ,  res = hasattr(alisa, "alisa")  print(res)  res_l = hasattr(alisa,  " age")  res_2 = hasattr(alisa, "bua")  D: \python\python . exe  "D : / 2021 YEAR/ python/ python"ft/  {'name':  {'name':  True  True  False  ' atisa'b  'atisa' ,

 

标签:12,Python,pypi,多态,simple,实例,参数,父类,属性
From: https://www.cnblogs.com/Alisa-sweet/p/17351205.html

相关文章

  • Python_11 类的方法
    一、查缺补漏1. 实例方法必须用类实例化对象()来调用,用类来调用时会执行,但是self中不是实例化类地址而是传的字符串二、类中的方法1. 实例方法1. 定义在类里面的普通方法(函数)2. 第一个参数必须是类实例,在方法调用的时候会自动传递,这个参数名称可以随便定义默认self3.......
  • Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型|附代
    原文链接:http://tecdat.cn/?p=27058最近我们被客户要求撰写关于因果推断与增量的研究报告,包括一些图形和统计输出。使用ML进行提升建模和因果推理Python包提供了一套使用基于最近研究的机器学习算法的提升建模和因果推理方法。允许用户根据实验或观察数据估计条件平均处理效......
  • python3.10升级pip命令-国内镜像源
    国内镜像源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplesome-packagepython3.10升级pip命令python.exe-mpipinstall--upgradepip安装pipinstallpip-review查看可更新pip-review批量自动更新pip-review--auto......
  • Python中的哈希表
    哈希表是一种常用的数据结构,广泛应用于字典、散列表等场合。它能够在O(1)时间内进行查找、插入和删除操作,因此被广泛应用于各种算法和软件系统中。哈希表的实现基于哈希函数,将给定的输入映射到一个固定大小的表格中,每个表项存储一个关键字/值对。哈希函数是一个将任意长度的输入映......
  • Python学习——Day4
    一、嵌套if·语法结构:if条件表达式1:  if内层条件表达式:   内存条件执行体1  else:   内存条件执行体2else: 条件执行体answer=input('您是会员吗?y/n')money=float(input('请输入您的购物金额:'))ifanswer=='y':ifmoney>=200:print('打8折,......
  • python-高频面试题
    面试题汇总1.生成器使用了yield关键字的函数称为生成器,生成器是一个自定义的迭代器。函数中有yield关键字时,函数名加()不会执行函数体代码,而是会生成一个生成器。生成器内只有__iter__和__next__方法。生成器对比return可以返回多次值,可以挂起保存函数的运行状态,而遇到return就......
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback
    尝试捕获异常回忆上次内容变量相加整型数字变量可以相加字符串变量也可以拼接但是字符串和整型数字整型数字和字符串不能相加怎么办?转格式int("1")str(2)可是如果输入的苹果数量是字符串"abc"int("abc")会发生什么??......
  • python多重for循环优化
    在日常工作中需要写脚本造数据来进行各种测试活动,有时候就会用到多重for循环。多重for循环虽然简单易懂,但是会不那么简洁,这个时候就需要此技巧了。在此构建三个列表app_ids=["AppAcsrvice","AppAcsrvice1"]、iface_names=["queryAdjustStl","queryAdjustStl1"]、offsets=......
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback
                               -不但要有自己的报错-还要保留系统的报错-有可能吗?​###保留报错​![图片描述](https://doc.shiyanlou.com/courses/uid......
  • ubuntu22.4.1 部署Postgres12 、PostGIS、TimescaleDB
    参考文章https://www.postgresql.org/download/linux/ubuntu/一、postgres数据库安装#Createthefilerepositoryconfiguration:1.sudosh-c'echo"debhttp://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.l......