动态编程,一种新的世界观(一)

这个世界上存在两种事物,一种是可以称作对象的实体,另外一种是对象之间的关系。在一定的范畴里面,实体对象可以看着一种客观存在,它们的存在不依赖于其它对象。而关系却不同,关系的存在直接或间接的依赖于实体对象。好比合同里面的甲方乙方可以看作实体对象,而合同作为一种双方权利义务的描述是一种关系的定义。合同这种关系的存在就依赖于合同上下文中的实体对象甲方和乙方。而如果甲方或乙方是一个公司,那么公司又可以看作是职员们由各种关系结合起来而构成的复合体。复合体就是由对象按照一定的关系组合而成,可以看作是一个整体的实体。

在面向对象编程语言里面,所有的实体都被看作对象,是西方哲学上一元论的体现。而中国的哲学观念除了关心对象还重视对象之间的关系,甚至认为关系塑造了对象。将关系引入到面向对象编程语言,创建一种对象-关系共同作用的编程语言,就是这种中国哲学观念的应用。关系怎么和对象相互作用呢?主要体现在以下几个方面:1、关系和对象一样可以被定义。关系作为一个复合体也可以拥有属性和方法。2、关系可以改变对象的行为,也就是改变对象的属性和方法。这种改变可以是对对象已有属性和方法的修改,也可以添加新的属性和方法,或者删除原有的属性和方法。3、关系依赖于特定对象的,所以关系的生命周期一般短于所依赖的对象。关系被解除后,对象可以恢复原有的方法和属性。

Python语言的关系型扩展:

Python语言虽然是面向对象的语言,但是其整个语言是高度可定制的。Python语言里面的对象的属性和方法是在运行时可以改变的,可以对对象实例添加,改变,和删除方法和属性。利用Python语言的这些特性,可以定义一个叫动态对象(DynamicObject)的类。这个类的特点是当其属性和方法名称以“x_”开头的时候,这个属性和方法就是可以多重绑定的。所谓多重绑定就是可以不止绑定一次,所有绑定都保留,但是只有最后一次的绑定有效。比方说对于动态对象obj,可以给它绑定两个都叫x_method的方法,这两个方法都会保存下来,当用obj.x_method()语句来调用x_method的时候,调用的是最后绑定的那个方法。如果用del obj.x_method语句删除obj的x_method方法,删除的是最后那个,删除后面这个之后,前面的x_method就生效了,这时obj.x_method()调用的就是第一次绑定的方法。同理,对于属性也有同样的行为。有了这样的一个类之后,其实例及其派生类的实例都会支持动态的属性和方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值