美文网首页
python @property 设置只读属性 重写 gette

python @property 设置只读属性 重写 gette

作者: wangtieshan | 来源:发表于2017-08-29 16:42 被阅读0次

做过 iOS OC 开发的都知道

@property NSString * name;

拥有该属性 name 的类的实例对象都可以使用 .(点) 方法设置和获取name


s.name = "xiaoming"

print(s.name);

>>> xiaoming

同时在 .m 文件中可以重写 name 的 getset 方法

- (NSString*)name {
    return _name;
}

- (void)setName:(NSString *)name {
    // 此处可以对name做一些校验和处理
    _name = name
}

同样 python 中也可以实现这种 set get

同样是使用 @property 修饰


class Student(object):

    # get 方法采用 @property 修饰
    @property
    def score(self):
        return self._score

    # set 方法采用 属性名称.setter 修饰
    @score.setter
    def score(self, value):

        if not isinstance(value, int):
            raise ValueError('score must be integer!')

        if value < 0 or value > 100:
            raise ValueError('score must between 0 - 100!')
        self._score = value

s = Student()

s.score = 100

print(s.score)


我们在 score 的 setter 方法中做了一些校验

如果我们只需要 get 方法怎么做

只需要使用 @property 声明 get 方法即可


class Frame(object):
    __slots__ = ('x', 'y', 'width', 'height')

    @property
    def size(self):
        return (self.width, self.height);

f = Frame()

f.x = 0

f.y = 0

f.width = 100

f.height = 200

print(f.size)

>>> (100, 200)

小结

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

相关文章

  • python @property 设置只读属性 重写 gette

    做过 iOS OC 开发的都知道 拥有该属性 name 的类的实例对象都可以使用 .(点) 方法设置和获取name...

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

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

  • 面试知识点

    1、property和属性修饰符 @property的本质是ivar(实例变量) + setter + gette...

  • property属性

    property函数的作用 讲方法转换为只读 重新设定一个属性设置和读取属性

  • @property

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

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

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

  • 设置只读属性

  • python @property

    参考 Python进阶之“属性(property)”详解 - Python - 伯乐在线

  • property

    @property (nonatomic, strong) NSString *name;那么其实生成的gette...

  • 属性Property

    property也是一个类,@property成为属性函数,即可以将python定义的方法当做属性访问,可以对属性...

网友评论

      本文标题:python @property 设置只读属性 重写 gette

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