【发布时间】:2022-01-20 09:40:15
【问题描述】:
我正在尝试解决我被要求使用属性方法来计算圆圈被创建的次数的问题。下面是相同的代码。
import os
import sys
#Add Circle class implementation below
class Circle:
counter = 0
def __init__(self,radius):
self.radius = radius
Circle.counter = Circle.counter + 1
def area(self):
return self.radius*self.radius*3.14
def counters():
print(Circle.counter)
no_of_circles = property(counter)
if __name__ == "__main__":
res_lst = list()
lst = list(map(lambda x: float(x.strip()), input().split(',')))
for radius in lst:
res_lst.append(Circle(radius).area())
print(str(res_lst), str(Circle.no_of_circles))
上面的代码为该区域提供了正确的输出,但计数器应该是 3,而不是我得到低于输出。下面是 input = 1,2,3 的输出
[3.14, 12.56, 28.26] <property object at 0x0000024AB3234D60>
我已经尝试了一切,但没有运气。在代码的主要部分 no_of_circles 被称为 Circle.no_of_circles 这表明它将使用 python 的属性方法。但是输出是错误的。请帮我找出哪里出错了。
【问题讨论】:
-
为什么需要
no_of_circles和counter分开?property装饰器旨在使方法看起来像属性,因此您可以使用属性的语法。但是counter已经是一个属性,因此可以使用属性的语法来访问它。 -
@kaya3 如果我不使用 no_of_circles 那么我该如何设置属性装饰器。代码的主要部分不会改变。您能编辑代码并告诉我需要在哪里进行更改吗?
标签: python-3.x python-decorators