繁体   English   中英

OOP / Python TypeError:“ float”对象不可调用

[英]OOP/Python TypeError: 'float' object is not callable

我收到TypeError:在我的Python代码上无法调用“ float”对象吗? 我想念什么? 我已经摆弄了它,还没有找到解决方案。 我也浏览了有关它的不同文章,但没有找到解决方案。 至少不是我认识或理解的一个。

class MathDojo(object):

    def __init__(self, *args):
        self.results = 0

    def add(self, *args):
        for i in args:
            if type(i) == list or type(i) == tuple:
                for v in i:
                    self.results += v
            else:
                self.results += i
        return self

    def subtract(self,*args):
        for i in args:
            if type(i) == list or type(i) == tuple:
                for v in i:
                    self.results -= v
            else:
                self.results -= i
        return self

    def results(self):
        print self.results
        return self

md = MathDojo()
md.add([1], 3,4).add([3,5,7,8], [2,4.3,1.25]).subtract(2, [2,3], [1.1,2.3]).results()

您有一个在__init__创建的属性results ,以及一个后来命名为试图调用该属性的方法的方法。 重命名一个或另一个,如下所示,其中我使用下划线表示属性。

也:

  • 您不需要__init__ *args
  • 使用if isinstance(i, (list, tuple))检查多种类型

码:

class MathDojo(object):

    def __init__(self):
        self._results = 0

    def add(self, *args):
        for i in args:
            if if isinstance(i, (list, tuple)):
                for v in i:
                    self._results += v
            else:
                self._results += i
        return self

    def subtract(self,*args):
        for i in args:
            if if isinstance(i, (list, tuple)):
                for v in i:
                    self._results -= v
            else:
                self._results -= i
        return self

    def results(self):
        print(self._results)
        return self

md = MathDojo()
md.add([1], 3,4).add([3,5,7,8], [2,4.3,1.25]).subtract(2, [2,3], [1.1,2.3]).results()
28.149999999999995

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM