学习日记04-3_面向对象三大特征

本文介绍了Python面向对象编程中的关键概念,包括伪多态的实现,强调了继承和方法重写的作用。通过示例展示了如何通过类的调用来实现不同对象的多态行为。此外,还探讨了鸭子类型的编程思想,即关注对象的行为而非其类型。最后,讲解了如何在类的内部和外部调用方法。
摘要由CSDN通过智能技术生成



# 自律 学习日记04-3

一.伪多态

1.面对对象三大特征
问题一:面向对象三大特征:封装,继承,多态
封装:将数据和方法放在一个类中就构成了封装。
继承:python中一个类可以继承于一个类也可以继承多个类,被继承的类叫父类(或者叫基类,base class)
多态:指的是一类事物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的子类对象调用相同的方法,产生不同的执行结果,多态可以增加代码的灵活度是
问题二:
伪多态的实现方法:1.必须有继承,2.子类必须有重写

class Baes(object):
    def run(self):
        print('____base___run___:慢慢走路')

class Cat(Baes):
    def run(self):
        print('____base___run___:Cat的走路方法')

class Dog(Baes):
    def run(self):
        print('____base___run___:Dog的走路方法')

class Pig(Baes):
    pass

b_obj=Baes()
c_obj=Cat()
d_obj=Dog()
p_obj=Pig()

#定义函数,分别传入不同的类对象进去,根据不同的对象做不同的类型,这就是多态
def func(obj):
    obj.run()

func(b_obj)
func(c_obj)
func(d_obj)
func(p_obj)

>>>
____base___run___:慢慢走路
____base___run___:Cat的走路方法
____base___run___:Dog的走路方法
____base___run___:慢慢走路

装饰函数不需要return,装饰类要+return
class Baes(object):
    def run(self):
        print('____base___run___:慢慢走路')

class Dog(Baes):
    def run(self):
        return '____base___run___:Dog的走路方法'

b_obj=Baes()
d_obj=Dog()

print(d_obj.run())
____base___run___:Dog的走路方法
#不用return,用print的话会返回none

二.鸭子类型

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

class Duck:
    def quack(self):
        print ("Quaaaaaack!")

class Bird:
    def quack(self):
        print( "bird imitate duck.")

class Doge:
    def quack(self):
        print ("doge imitate duck.")

def in_the_forest(duck):
    duck.quack()

duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
    in_the_forest(x)

三.类的调用

1.类的内部调用:self.<方法名>(参数列表)。
2.在类的外部调用:<实例名>.<方法名>(参数列表)。

class Baes(object):
    def run(self):
        print('____base___run___:慢慢走路')
Baes().run()
>>>>>
____base___run___:慢慢走路

两种写法:

class Baes(object):
    def run(self):
        print('____base___run___:慢慢走路')

a=Baes()
def fun(a):
    a.run()
fun(a)
>>>>>
____base___run___:慢慢走路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值