美文网首页ITS·黑客
Python学习笔记(十七)使用@property,多重继承

Python学习笔记(十七)使用@property,多重继承

作者: 木凛 | 来源:发表于2017-05-09 16:19 被阅读27次

    使用@property

    Python内置的@property装饰器就是负责把一个方法变成属性调用的

    把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作

    @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。

    "单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;

    "双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

    同时单下划线为了便于测试

    @peoperty 是继承或者说限定一个不变的属性,他只能读取,不能接收

    @继承者.setter 是将上面的不变属性进行数据接收并且进行数据传递的

    多重继承

    MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。

    Python自带的很多库也使用了MixIn。举个例子,Python自带了TCPServer和UDPServer这两类网络服务,而要同时服务多个用户就必须使用多进程或多线程模型,这两种模型由ForkingMixIn和ThreadingMixIn提供。通过组合,我们就可以创造出合适的服务来。

    比如,编写一个多进程模式的TCP服务,定义如下:

    class MyTCPServer(TCPServer, ForkingMixIn):

        pass

    由于Python允许使用多重继承,因此,MixIn就是一种常见的设计。

    只允许单一继承的语言(如Java)不能使用MixIn的设计。

    相关文章

      网友评论

        本文标题:Python学习笔记(十七)使用@property,多重继承

        本文链接:https://www.haomeiwen.com/subject/jiqitxtx.html