摘要: 想定义各种类型的数据结构,但是要对允许分配给某些属性的值实施约束。在此问题中,基本上要面对某些实例属性的设置进行检查或声明。 为此,需要基于每个属性自定义属性的设置,此时应该使用描述符。一般通过类及类的继承系统来实现,如下示例: 另一种实现方式是使用类装饰器,如下: 第三种方式是使用元类,如下: 本 阅读全文
posted @ 2019-12-29 23:36 Jeffrey_Yang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 有时候,我们会厌倦为无数的class编写__init__函数,而__init__函数的作用仅是为了初始化一些属性。 我们可以编写一个父类来约定子类的__init__方式,根据类属性列表来一一初始化。 如果要支持关键字参数的初始化形式,则需要做如下更改: 阅读全文
posted @ 2019-12-29 20:59 Jeffrey_Yang 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 在Python中,将方法变为属性使用@property的装饰器。有时候,为了提高性能,想在仅首次调用方法property时进行计算,后续则使用缓存的值。 此时,可以使用一个类装饰器,如下: class LazyProperty(object): def __init__(self, func): s 阅读全文
posted @ 2019-12-29 18:58 Jeffrey_Yang 阅读(293) 评论(0) 推荐(0) 编辑