Python | 刷题笔记

继承

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()

覆盖+重写父类函数

python 复制代码
class Pet:
    def  __init__(self,name):
        self.name=name
        print(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=age
        self.sex=sex
    def eat(self):
        super().eat()#利用继承中的super()打点调用父类函数
        print(f'{self.name}吃完东西后用唾液洗洗脸')
c1=Cat("大橘",17,"女孩纸")
c1.eat()

多层继承

python 复制代码
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 爆金币
我有钱!

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

python 复制代码
class GrandFather:
    def getMoney(self):
        print("爷爷给了零花钱....")


class Father(GrandFather):
    pass


class 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'>]

初始化是广搜

python 复制代码
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中可以直接调用
即便两个类之间没有继承关系,也可以调用

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条件较为严格

python 复制代码
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博客

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

python 复制代码
# 静态方法:用@staticmethod装饰的不带self参数的方法叫做静态方法
#        类的静态方法可以没有参数,可以直接使用类调用

class Dog:
    @staticmethod
    def bark():#这里没有self
        print("wangwang!")


d = Dog()
d.bark()
Dog.bark()

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

类方法:

python 复制代码
class Dog:
    legs = 4
    teeth = 42

    # 类方法
    @classmethod
    def printInfo(cls):
        print(f"狗有{cls.legs}条腿,{cls.teeth}颗牙齿")


d = Dog()
d.printInfo()
Dog.printInfo()

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

相关推荐
KevinRay_7 分钟前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack39 分钟前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站1 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack1 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
PieroPc2 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
VinciYan2 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
测试老哥3 小时前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
終不似少年遊*3 小时前
美国加州房价数据分析01
人工智能·python·机器学习·数据挖掘·数据分析·回归算法
如若1233 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
西猫雷婶4 小时前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv