Python基础

#愤怒的小鸟
class birder:
    def __init__(self,name,gongji):
        self.name=name
        self.gongji=gongji
    def test(self):
        print('嗷嗷叫!!!')
class fenlie(birder):
    def __init__(self,name,gongji):
        birder.__init__(self,name,gongji)
    def jiao(self):
        print('{0}:弹射-飞,攻击性:{1}'.format(self.name,self.gongji),end='')
        super().test()
class huojian(birder):
    def __init__(self,name,gongji):
        birder.__init__(self,name,gongji)
    def jiao1(self):
        print('{0}:弹射-飞,攻击性:{1}'.format(self.name,self.gongji))
        super().test()
class red(birder):
    def __init__(self,name,gongji):
        birder.__init__(self,name,gongji)
    def jiao(self):
        print('{0}:弹射-飞,攻击性:{1}'.format(self.name,self.gongji))
    def test(self):
        print('喳喳叫!!!')
f=fenlie('分裂鸟','分裂攻击')
f.jiao()
h=huojian('火箭鸟','加速冲撞')
h.jiao1()
r=red('红色鸟','普通攻击')
r.jiao()
r.test()
Decorator装饰模式允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
抽象类
class 交通工具:
    def run():抽象方法

class 火车(交通工具):
    def run():
        print('在轨道上跑')
接口

def debug(func):#装饰say_hello
    def wrapper():
        print('wrapper……')
        return func()
    return wrapper
def say_hello():#func
    print('hello')
say_hello=debug(say_hello)

#x=shucai(diguo)x()相当于@shucai
吃火锅
def shucai(f):
    def caidan1():
        print('蔬菜30元')
        return 30+f()
    return caidan1
def haixian(f):
    def caidan2():
        print('海鲜80元')
        return 80+f()
    return caidan2
@haixian
@shucai
def diguo():
    print('底锅50元')
    return 50
print(diguo())

def decorator(func):
    print('开始1')
    def funx(n):#调用test
        print('这是funx')
        return func(n)
    print('结束1')
    return funx
def decorator2(f):
    print('开始2')
    def funy(n):#调用test
        print('这是funy')
        return f(n)
    print('结束2')
    return funy
def test(n):
    print(n,'最后')
x=decorator2(decorator(test))
x(5)
'''
#汉堡
def coke(f):
    def menu1(n):
        print('可乐8元')
        return 8+f(n)
    return menu1
def fries(f):
    def menu2(n):
        print('薯条13元')
        return 13+f(n)
    return menu2
def chicken(f):
    def menu3(n):
        print('鸡翅10元')
        return 10+f(n)
    return menu3
@chicken
@coke
@fries
@chicken
def hamburger(n):
    print('{}个汉堡{}元'.format(n,n*12))
    return n*12

print(hamburger(2))

#多态:同一个方法,结果不一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值