Python 定义;加上「;类中的函数
我正在用Python编写自己的代码语言(称为Bean),我希望数学函数具有以下语法: 打印数学。添加(3+7)Python 定义;加上「;类中的函数,python,python-2.7,Python,Python 2.7,我正在用Python编写自己的代码语言(称为Bean),我希望数学函数具有以下语法: 打印数学。添加(3+7) =>10 打印数学.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):
=>10 打印数学.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)如果您不想更改add函数的名称,您可以只更改
self.add
。这两个add
s相互冲突。如果运行以下操作,则不会出现任何错误:
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()
一个对象不能有两个同名的属性。因此,如果您有一个名为
add
的属性来保存一个数字,那么它就不能有一个名为add
的方法,因为方法只是碰巧保存函数的属性。当您这样做时:
this.add = add
您正在用该数字替换该方法。所以你需要使用不同的名字
您说希望能够调用math.Add()
。但是您定义的方法是add
。应该是:
def Add():
print this.add
这与保存数字的
add
属性没有冲突,因为名称区分大小写。命名约定非常有问题。Add是一个参数和一个函数,你说你想要math.Add()
,但是你调用了math.Add()
。为什么add()
方法没有像您的示例那样接受参数?math.add(4*8)
-什么?那不是加法。这个数学有什么意义呢?如果你打算使用常规的+
和*
操作符,那么就添加东西?@Barmar在类中,这就是你定义函数的方式。