首页 > 编程语言 >Python多态

Python多态

时间:2024-09-03 22:51:55浏览次数:7  
标签:Python self 多态 Animal print class def cls

# 1 多态
# 指同一种行为具有不同的表现形式
# 1.1 多态的前提
# 继承
# 重写
# class Animal:
#     def speak(self):
#        print('动物')
# class Dog(Animal):
#     def speak(self):
#         print('狗')
#
# class Cat(Animal):
#     def speak(self):
#         print('猫')
#
#
# dog = Dog()
# cat = Cat()
# dog.speak()
# cat.speak()

# 1.2 多态性:一种调用方式,不同的执行结果
class Animal(object):
    def eat(self):
        print('吃猫粮')
class Pig(Animal):
    def eat(self):
        print('什么都吃')
class Dog(Animal):
    def eat(self):
        print('吃奥利奥')
# 多态性: 定义一个统一的接口,一个接口多种实现
def test(obj):
    obj.eat()
animal= Animal()
pig=Pig()
dog=Dog()
test(animal)
test(pig)
test(dog)
# test函数传入不同的对象,执行不同对象的eat方法


# 2 静态方法
# 使用@staticmethod来进行修饰,静态方法没有self,cls参数的限制
# 静态方法与类无关,可以被转化成函数使用
class Person(object):
    @staticmethod
    def study(name):
        print(f'{name}人类会学习')
# 静态方法既可以使用对象访问也可以使用类访问
Person.study('lwl')
pe=Person()
pe.study('lwl')
# 取消不必要的参数传递,有利于减少不必要的内存占用和性能消耗

# 3.类方法
# 使用装饰器@classmethod来标识为类方法,第一个参数必须是类对象,一般以cls作为第一个参数
# class 类名:
#  @classmethod
#  def 方法名(cls,形参):
#      方法体
class Person(object):
    name='lwl'
    @classmethod
    def xiaolong(cls):
        print("cls",cls)  #cls代表类对象本身,类本质上就是一个对象
        print('雄安')
        print(cls.name)
print(Person)
Person.xiaolong()
# 当方法中需要使用到类对象(如访问私有类属性等),定义类方法
# 类方法一般是配合类属性使用

标签:Python,self,多态,Animal,print,class,def,cls
From: https://blog.csdn.net/2401_84648157/article/details/141873977

相关文章

  • 【Python学习笔记】第1章 问答环节
    人们为什么使用Python软件质量:可读性、可维护性开发者生产效率:代码更少程序的可移植性:同样的代码在不同的操作系统中都可以运行标准库的支持:内置可移植的功能模块组件构成:轻松地与应用程序的其他部分通信享受乐趣:略软件质量追求代码简洁,可读性模块化、面向......
  • Python参数传递的艺术:解锁编程灵活性的秘密武器
    引言参数传递作为函数调用过程中的关键环节,对程序逻辑有着重要影响。不同的参数传递方式能够帮助我们更好地组织代码,提高程序运行效率。比如,在处理大量数据或复杂业务逻辑时,合理的参数设计可以让我们的代码更简洁、更高效;而在进行单元测试或者接口调试时,灵活的参数机制又能极大地......
  • 函数的力量:掌握Python中的“返回值”艺术
    引言在实际开发过程中,函数的返回值扮演着极其重要的角色。它不仅能够简化代码结构,提高代码复用性,还能帮助我们构建更加灵活高效的程序架构。通过合理设计函数的返回值,可以轻松实现数据处理、状态传递等多种功能。接下来,让我们一起深入了解如何定义与使用Python函数中的返回值。基......
  • 矩阵乘以向量 Python代码
    回顾矩阵与向量相乘设有一个矩阵A(2行3列),设有一个列向量(3个分量)不难发现,矩阵×列向量,就是把矩阵看做是n个行向量然后与被乘的向量进行点乘,点乘得到的数量,就构成了一个新的向量上面的计算过程如下:回顾:矩阵×列向量的必要前提并不是所有矩阵都可和任意列向量相乘,......
  • python学习
    jieba.lcut()用于对中文分词,split是对字符串操作,使字符变为列表分割importjiebatext="欢迎来到通大"seg_list=jieba.cut(text,cut_all=False)print("精确模式:"+"/".join(seg_list))精确模式:欢迎/来到/通大jieba.posseg()进行词性标注importjie......
  • 30:Python模块&包
    #模块&包#模块(modue)的概念:#在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。#为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种#组织代码的方式。在Pyth......
  • python 怎么判断字符串开头
    函数:startswith()作用:判断字符串是否以指定字符或子字符串开头。一、函数说明语法:string.startswith(str,beg=0,end=len(string))或string[beg:end].startswith(str)参数说明:string:被检测的字符串。str:指定的字符或者子字符串。(可以使用元组,会逐一匹配)beg:设置字符串......
  • (D卷,100分)- 堆栈中的剩余数字(Java & JS & Python&C&C++)
    题目描述向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺序依次为nx…n4、n3、n2、n1,每当元素入栈时,如果n1=n2+…+ny(y的范围[2,x],1<=x<=1000),则n1~ny全部元素出栈,重新入栈新元素m(m=2*n1)。如:依次向栈存入6、1、2、3,当存入6、1、2时,栈底......
  • Python批量分割Excel后逐行做差、合并文件的方法
      本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件,首先依据某一列数据的特征截取我们需要的数据,随后对截取出来的数据逐行求差,并基于其他多个文件夹中同样大量的Excel表格文件,进行数据跨文件合并的具体方法。  首先,我们来明确一下本文的具体需......
  • Python深入理解快速排序算法及其时间复杂度分析
    Python深入理解快速排序算法及其时间复杂度分析快速排序(QuickSort)是一种高效的排序算法,广泛应用于各种实际场景中。它采用分治法(DivideandConquer)策略,通过选择一个基准元素(pivot),将数组分成两部分,使得左侧部分的元素都小于基准元素,右侧部分的元素都大于基准元素。然后递......