Python简化类例三:实现类实例的事件定义

# -*- coding: utf-8 -*
'''
前言:这是我自己想出来的方法,我不知道是否有人用过这种写类的方法,我也没想出一个什么样名字来称呼它,反正我叫它简化类
之所以称之为简化类,是因为我没办法实现多重继承,但类的基本继承,重写还是实现了的
如果有兴趣的朋友请留下您保贵的建议或加我QQ:410177254 或 微信:carmelcarmen,让这个写法能更有创造性一些
'''
#Python简化类例三:实现类实例的事件定义
def ClassTest3():
    def p() :pass
    p.val=0
    p.valChange=None #实例存放事件的变理
    def o():pass

    def setVal(value):
        if p.val==value:return
        oldVal=p.val
        p.val=value
        if p.valChange!=None : p.valChange(oldVal,value) #运行事件
    o.setVal=setVal;del setVal

    def getVal():
        return p.val
    o.getVal=getVal;del getVal

    def setValChangeFun(fn):
        p.valChange=fn #设置类实例的val变量变化事件,如果fn==None 即为删除事件
    o.setValChangeFun=setValChangeFun;del setValChangeFun
    return o

def abc(oldVal,newVal):
    '''该函数并不是类中的部份,而是做为类实例的事件的设置'''
    print("val变量发生改变,改变前 : %d, 改变后 : %d"%(oldVal,newVal))
t3=ClassTest3()
t3.setValChangeFun(abc)
t3.setVal(4)  #会打印出: val变量发生改变,改变前 : 0, 改变后 : 4
t3.setVal(4)  #不会打印,因为val并未发生改变

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值