当前位置: 首页 > news >正文

Python | 刷题笔记

继承

class Father:__secret="you are your own kid"stroy="i'am a handsome boy..."def  tellstory(self):print("我的故事:",self.stroy)def  __tellstory(self):print("我的秘密:",Father.__secret)
class Son(Father):def tell(self):Father._Father__tellstory(self)#调用父类的私有函数 父类名打点_父类名__私有函数名(self)self.tellstory()
s1=Son()
s1.tell()

覆盖+重写父类函数


class Pet:def  __init__(self,name):self.name=nameprint(f"一个名叫{self.name}的宠物出生了")def eat(self):print(f'{self.name}在吃东西...')
class Dog(Pet):def lookAfter(self):print(f'{self.name}在看门')def eat(self):print(f'{self.name}在啃骨头')
class Cat(Pet):def __init__(self,name,age,sex):super().__init__(name)#利用父类自带的函数初始化self.age=ageself.sex=sexdef eat(self):super().eat()#利用继承中的super()打点调用父类函数print(f'{self.name}吃完东西后用唾液洗洗脸')
c1=Cat("大橘",17,"女孩纸")
c1.eat()

多层继承

class Father:def getq(self):print("father 爆金币")
class Monther:def getq(self):print("monther 爆金币")
class Child(Father,Monther):def getq(self):super().getq()print("我有钱!")
c1=Child()
c1.getq()

 father 爆金币
我有钱!

子类调用父类时,调用对象的顺序是深度优先

 

class GrandFather:def getMoney(self):print("爷爷给了零花钱....")class Father(GrandFather):passclass Mother:def getMoney(self):print("母亲给了零花钱....")# 继承Father和Mother
class Child(Father, Mother):def getMoney(self):super().getMoney()print("孩子有了零花钱.....")c1=Child()
c1.getMoney()
print(Child.mro())#子类的调用顺序

 

爷爷给了零花钱....
孩子有了零花钱.....
[<class '__main__.Child'>, <class '__main__.Father'>, <class '__main__.GrandFather'>, <class '__main__.Mother'>, <class 'object'>] 

初始化是广搜

class Human():def __init__(self):print("人类...")
class Father(Human):def __init__(self):print("父亲开始初始化...")super().__init__()print("父亲初始化结束...")
class Monther(Human):def __init__(self):print("母亲开始初始化...")super().__init__()print("母亲初始化结束...")
class Child(Father,Monther):def __init__(self):print("孩子开始初始化...")super().__init__()print("孩子初始化结束...")
c1=Child()

 孩子开始初始化...
父亲开始初始化...
母亲开始初始化...
人类...
母亲初始化结束...
父亲初始化结束...
孩子初始化结束...


多态

这里传入的是v,在调用animallEating时需要调用eating对象
而venusFlaytrap类也具有对象eating,在python中可以直接调用
即便两个类之间没有继承关系,也可以调用

class Animal:def eating(self):print("动物下在吃东西.....")class Pet(Animal):def eating(self):print("宠物在吃东西.....")class Dog(Pet):def eating(self):print("狗在啃骨头.....")class Cat(Pet):def eating(self):print("猫在吃鱼....")class Zoo:def animallEating(self, animal):if isinstance(animal, Animal):print("这是展示动物吃东西的地方:")else:print("这是非动物吃饭的展示")animal.eating()class venusFlytrap:def eating(self):print("捕蝇草在吃小虫子.....")v = venusFlytrap()
z = Zoo()
# z是Zoo类但是可以调用venusFlytrap类的对象
z.animallEating(v)

 type isinstance异同

isinstance 会判断父类

type条件较为严格

c=Cat()
#判断类型时,只看直接类型
#type是严格满足类型
print(type(c) is Cat) #True
print(type(c) is Animal) #False
print(type(c) is Pet) #False#isinstance 判断对象是否为一个类型的实例
# 判断实例类型时,涵盖父类的类型
print("*"*30)
print(isinstance(c,Cat)) #True
print(isinstance(c,Pet)) #True
print(isinstance(c,Animal)) #True
print(isinstance(v,Animal)) #False

静态方法和类方法

Python——类方法和静态方法_python类方法和静态方法-CSDN博客 

静态:(打印或者是绘图)不需要创建对象的时候可以使用

# 静态方法:用@staticmethod装饰的不带self参数的方法叫做静态方法
#        类的静态方法可以没有参数,可以直接使用类调用class Dog:@staticmethoddef bark():#这里没有selfprint("wangwang!")d = Dog()
d.bark()
Dog.bark()

静态方法不能通过self和类名访问成员变量 

类方法:

class Dog:legs = 4teeth = 42# 类方法@classmethoddef printInfo(cls):print(f"狗有{cls.legs}条腿,{cls.teeth}颗牙齿")d = Dog()
d.printInfo()
Dog.printInfo()

两者均可以使用类名和对象名打点调用函数

http://www.lryc.cn/news/366979.html

相关文章:

  • 软件三班20240605
  • http和https数据传输与协议区分
  • 天才程序员周弈帆 | Stable Diffusion 解读(一):回顾早期工作
  • 软件架构初探
  • Python01 -分解整包数据到各个变量操作和生成器
  • flutter image_picker 执行拍照的图片怎么保存到本地
  • 基于Python的北京天气数据可视化分析
  • Linux编译器-gcc或g++的使用
  • 一条sql的执行流程
  • Android音乐播放器的思路处理
  • 算法课程笔记——可撤销并查集
  • 【排序算法】快速排序
  • OS复习笔记ch7-2
  • 4.通用编程概念
  • iBeacon赋能AR导航:室内定位技术的原理与优势
  • 【sklearn】【逻辑回归1】
  • java(kotlin)和 python 通过DoubleCloud的kafka进行线程间通信
  • vivado DIAGRAM、HW_AXI
  • 学习分享-为什么把后台的用户验证和认证逻辑放到网关
  • 27 ssh+scp+nfs+yum进阶
  • LabVIEW液压伺服压力机控制系统与控制频率选择
  • 阿里云(域名解析) certbot 证书配置
  • Web LLM 攻击技术
  • Java等待异步线程池跑完再执行指定方法的三种方式(condition、CountDownLatch、CyclicBarrier)
  • 秒杀优化+秒杀安全
  • 48、Flink 的 Data Source API 详解
  • 深入解析Java扩展机制:SPI与Spring.factories
  • Vue2之模板语法
  • java基础练习题
  • unity中通过实现底层接口实现非按钮(图片)的事件监听