微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python – @ property与__init __()中的设置有什么区别?

无法从这个问题的其他主题得到一个直接的答案:

Python中,使用之间的主要区别是什么

class Foo(object):
  def __init__(self,x):
    self.x = x

class Foo(object):
  def __init__(self,x):
    self._x = x

  @property
  def x(self):
    return self._x

通过它使用@property以这种方式看起来使x只读..但也许有人有更好的答案?谢谢/弗雷德

解决方法

对于您的示例,是的,这允许您具有只读属性.此外,属性可以让您看起来拥有比实际更多的属性.考虑一个带有.radius和.area的圆圈.该区域可以根据半径计算,而不必同时存储

import math

class Circle(object):
    def __init__(self,radius):
        self.radius = radius

    @property
    def area(self):
        return math.pi * (self.radius ** 2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐