美文网首页
Python 扩展property属性

Python 扩展property属性

作者: 陈忠俊 | 来源:发表于2019-09-28 15:14 被阅读0次

我们都知道property是将类的方法变成属性的装饰器

>>> class Circle:
...     def __init__(self, radius):
...         self.radius = radius
...     @property
...     def perimeter(self):
...         return 2 * self.radius * 3.14
...     @property
...     def area(self):
...         return self.radius**2 * 3.14
... 
>>> test = Circle(2)
>>> test.perimeter
12.56
>>> test.area
12.56

有时候我们想隐藏一些内部的属性,不让外部可以调用和更改。我们创建了以下类方法

>>> class Test:
...     def __init__(self, name):
...         self.__name = name
...     @property
...     def name(self):
...         return self.__name
... 
>>> aa = Test('eclipse')
>>> aa.name
'eclipse'
>>> aa.name = '123'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: can't set attribute

此时,我们无法在外部修复其属性,这时候我们需要扩展propery方法,如下:

>>> class Test:
...     def __init__(self, name):
...         self.__name = name
...     @property
...     def name(self):
...         return self.__name
...     @name.setter
...     def name(self, new_name):
...         self.__name = new_name
... 
>>> bb = Test('eclipse')
>>> bb.name
'eclipse'
>>> bb.name = 'Python'
>>> bb.name
'Python'
>>> 

我们还可以扩展propertydeleter方法,用于删除该属性值。用的不多,这里不说了。

相关文章

  • Python 扩展property属性

    我们都知道property是将类的方法变成属性的装饰器 有时候我们想隐藏一些内部的属性,不让外部可以调用和更改。我...

  • python @property

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

  • 属性Property

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

  • 文件存储类型总结

    1、Property Lists 属性列表,扩展名为plist。 Property list有三种存储方式:XML...

  • Python Property 属性

    输出结果: 更加简介的方式如下:

  • python属性property

    属性函数(property)在对象中两个很重要的元素就是属性和方法,在调用的时候两者是有区别的。 从例子中我们可以...

  • Python: property属性

    @property可以把一个实例方法变成其同名属性,以支持.号访问@property属性的两种方式装饰器:在方法上...

  • python 属性property

    class Person:def init(self, first_name):self.first_name =...

  • Kotlin-对Intent携参取值的扩展-(借鉴)

    目的: 主要是使用Kotlin扩展属性处理Intent中数据的取值 Kotlin的Property的读写扩展,下面...

  • 属性property

    Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情。属性property能做以...

网友评论

      本文标题:Python 扩展property属性

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