Python 类与静态方法 定义一个类方法getcirclecount inside circle,该方法返回创建的圆对象数。提示:使用classmethoddecorator 尝试使用对象和类访问类方法 要测试创建的圆数和每个圆的面积,请在输入中提供每个圆的半径 输出圆的总数
这是我试过的Python 类与静态方法 定义一个类方法getcirclecount inside circle,该方法返回创建的圆对象数。提示:使用classmethoddecorator 尝试使用对象和类访问类方法 要测试创建的圆数和每个圆的面积,请在输入中提供每个圆的半径 输出圆的总数,python,python-3.x,list,append,class-method,Python,Python 3.x,List,Append,Class Method,这是我试过的 import os import sys #Add circle class implementation here class Circle: pi = 3.14 count = 0 def __init__(self,radius): self.radius = radius @classmethod def getCircleCount(self): Circle.count += 1
import os
import sys
#Add circle class implementation here
class Circle:
pi = 3.14
count = 0
def __init__(self,radius):
self.radius = radius
@classmethod
def getCircleCount(self):
Circle.count += 1
return Circle.count
def area(self):
area = self.radius **2 * Circle.pi
return area
if __name__ == "__main__":
with open(os.environ['OUTPUT_PATH'], 'w') as fout:
res_lst = list()
circcount = list()
lst = list(map(lambda x: float(x.strip()), input().split(',')))
for radi in lst:
c=Circle(radi)
res_lst.append(str(c.getCircleCount())+" : "+str(c.area()))
fout.write("{}\n{}".format(str(res_lst), str(Circle.getCircleCount())))
对于输入1,2
预期产量为
['1 : 3.04', '2 : 12.56']
2
我得到的输出:
['1 : 3.04', '2 : 12.56']
3
这里没有给出2个输入,但最后一行的输出是3,使用计数而不是增加
Circle.count
而不是Circle.getCircleCount()
编辑:如果无法编辑main
选项1:初始化时注册新函数
选项2:使用arg*
或者,您也可以像这样编写decorator。我确实喜欢第一个,因为它很简单。您不应该在类方法
getCircleCount
中将循环计数增加到构造函数中。只有创建新的圆时,圆计数才会增加。现在,如果您调用getCircleCount
100次。循环计数将增加100。除了将增量移动到构造函数,还需要向析构函数_del___;()@luthervespers oh添加减量。我无法编辑主函数。我更新了新版本。这只是一个快速的解决方案。
class Circle:
pi = 3.14
count = 0
def __init__(self,radius):
self.radius = radius
self.getCircleCount = self._foo
def _foo(self):
Circle.count += 1
return Circle.count
@classmethod
def getCircleCount(cls):
return cls.count
# ....
class Circle:
# ...
def getCircleCount2(*args):
if len(args) == 0:
return Circle.count
else:
Circle.count += 1
return Circle.count