在类中定义“添加”功能

时间:2016-09-09 23:22:31

标签: python python-2.7

我在Python中编写自己的代码语言(称为Bean),我希望数学函数具有以下语法:

print math.add(3 + 7)
==→10

print math.mul(4 * 8)
==> 32

等等。到目前为止,我的代码是:

bean_version = "1.0"
console = []
print "Running Bean v%s" % bean_version
#Math Function
class math(object):
    def __init__(self, add, sub, mul, div):
        self.add = add
        self.sub = sub
        self.mul = mul
        self.div = div
    def add(self):
        print self.add
math = math(1,0,0,0)
print math.add()

但是这会返回一个错误,说 TypeError:'int'对象不可调用。我可以将“添加”功能更改为其他名称,但它可以使用,但我想使用“添加”作为名称。
谢谢(顺便说一句,这是Python 2.7.10)

2 个答案:

答案 0 :(得分:3)

对象不能具有两个具有相同名称的属性。因此,如果您有一个名为add的属性,其中包含一个数字,它也可能还有一个名为add的方法,因为方法只是碰巧保存函数的属性。当你这样做时:

this.add = add

您正在用该号码替换该方法。所以你需要使用不同的名称。

您说您希望能够拨打math.Add()。但是您定义的方法是add。它应该是:

def Add():
    print this.add

这与保存该号码的add属性不冲突,因为名称区分大小写。

答案 1 :(得分:2)

如果您不想更改添加功能的名称,则只需更改add即可。这两个bean_version = "1.0" console = [] print "Running Bean v%s" % bean_version #Math Function class math(object): def __init__(self, add, sub, mul, div): self.adds = add self.sub = sub self.mul = mul self.div = div def add(self): print self.adds math = math(1,0,0,0) print math.add() 相互冲突。如果你运行它,你不会得到任何错误:

{{1}}