美文网首页
Python定义只读属性

Python定义只读属性

作者: 小码弟 | 来源:发表于2018-10-20 20:12 被阅读0次

C++/Java语言中,private关键字搭配getter和setter方法可以实现只读属性。Python没有private关键字,那Python怎么设置属性只读呢?
有两种方法:1. 重写__setter__方法; 2. 定义__变量并用@property修饰其getter方法。

1、 重写setattr方法

先来看看,当我们为属性赋值时,发生了什么:


Snip20181020_6.png

可以看见,obj.var = val是在__setattr__这个特殊方法内实现的。那我们就可以在这个方法内部屏蔽只读属性。

Snip20181020_7.png
请注意,这种方法会导致read_only属性不能被初始化,传值给构造函数也不行。

2、定义成__属性,搭配@property

属性的setter方法与属性同名


Snip20181020_8.png

相关文章

  • Python定义只读属性

    C++/Java语言中,private关键字搭配getter和setter方法可以实现只读属性。Python没有p...

  • ts 接口的属性权限、使用、继承

    1. 接口的属性类型和权限 只读属性只读属性,在被定义后不可被修改 可选属性接口被调用的时候,它所定义的属性必须全...

  • 使用协议的注意项

    协议中定义的属性 1.协议中定义的只读属性,在实现协议的类型中既可以定义为只读的计算属性,也可以根据需要设置为可读...

  • TypeScript 接口

    TypeScript接口 接口只读属性 使用关键字readonly定义只读的接口属性 出现错误,如下 创建不可修改...

  • python 设置只读属性(property或者__setter

    python设置只读属性的方式有两种 1.通过property装饰器和私有属性配合完成只读属性 2.借助__set...

  • @property

    使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义...

  • Dart语法基础-6 setter & getter

    1. get 和 set的使用 使用getter来定义只读的计算属性属性:

  • JavaScript之Array类型

    1. 介绍 1.1 定义 1.2 使用和赋值 1.3 length属性 length属性不是只读的!通过设置此属性...

  • 2018-08-18

    已经定义重新定义来添加的undefined 不是关键字,是个只读的变量 window的一个只读属性 name是不存...

  • @property 与 @*.setter装饰器(类内)

    @property 装饰只读属性 将一个类的方法用@property装饰一下,就变成了一个只读的属性。先看下面定义...

网友评论

      本文标题:Python定义只读属性

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