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)
点赞