Python多态

# 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()
# 当方法中需要使用到类对象(如访问私有类属性等),定义类方法
# 类方法一般是配合类属性使用

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值