Python:从方法调用方法



我一直在尝试使用Python制作足球游戏。 我遇到的大多数问题我都能够找到解决方法。 但是,我遇到了错误"未定义全局名称'---'",指的是方法名称。 从我所看到的,问题涉及尝试从方法调用方法。 由于粘贴我的代码会花费太多时间来解释正在发生的事情,所以我写了一个非常基本的问题示例:

class example():
    def doMath(x,y):
        z = x + y
        z = square(z)
        return z
    def square(z):
        z = z * z
        return z
    print doMath(5,4)

这绝不意味着是一个值得编写的程序,也不是进行这种计算的明智方法......它只是模仿我遇到的问题。 此代码将不起作用,因为方法"doMath"不知道方法"square"的存在。 我已经看到通过将 square 方法作为子方法来解决这个问题(我不知道它叫什么,它只是在主要方法下缩进(。 但是,这在我的足球代码中是不可行的,因为我会有多个方法来调用它。 我见过与此类似的问题,但答案仍然不适合我的代码。 全局函数似乎是我正在寻找的,但它通常会导致不存在的错误。我可以在主指令中添加一堆指令,但这是很多工作和代码行,我不想添加 - 这会让它变得非常丑陋。

所以主要问题是...如何让 doMath 方法调用 square 方法,而无需组合它们。

当我们在它的时候...我一直在调用这些方法而不是函数...我说的对吗?

正如其他人所指出的,您需要使用 self ,并且您需要正确调用您的方法,例如:

#!/usr/bin/python   
class example(): 
    def doMath(self, x, y):
        z = x + y
        z = self.square(z)
        return z
    def square(self, z):
        z = z * z
        return z
p = example()
print p.doMath(5,4)

输出:

paul@local:~/src/python$ ./square.py
81
paul@local:~/src/python$

显然,在这种特殊情况下,这些方法在类中根本没有任何优势,您可以更轻松地做到这一点:

#!/usr/bin/python
def square(z):
    return z * z
def doMath(x, y):
    return square(x + y)
print doMath(5,4)

当我们在它的时候...我一直在调用这些方法而不是函数...我说的对吗?

method -> 类成员的例程。
function ->返回结果的例程(与数学函数比较(
procedure ->不返回结果
的例程 member ->类或结构的一部分(成员变量或成员函数等(

过程在python中很奇怪,因为即使过程不返回任何内容,您仍然可以将其结果分配给变量。
在这种情况下,结果None请参见此处:Python 过程返回值

如果doMathsquare是类的一部分,它们都应该有另一个名为self的参数。 方法调用在此self参数上进行。 例如:

def doMath(self, x, y):
    z = x + y
    z = self.square(z)
    return z
class example():
    def doMath(self,x,y):
        z = x + y
        z = self.square(z)
        return z
    def square(self,z):
        z = z * z
        return z
    def p(self):
        print self.doMath(5,4)
e=example()
e.p()

相关内容

  • 没有找到相关文章

最新更新