簡體   English   中英

Python:從方法中調用方法

[英]Python: Calling Methods from a Method

我一直在嘗試使用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”存在。 我已經看到通過將平方方法作為子方法來解決此問題(我不知道它叫什么,它只是在主要方法下縮進)。 但是,這在我的足球代碼中不可行,因為我將有多種方法來調用它。 我已經看到類似的問題,但是答案仍然不適合我的代碼。 全局函數似乎是我要尋找的函數,但是通常會導致不存在的錯誤。 可以在主體上添加一堆指令,但這是很多工作和我不想添加的代碼行,這會使它看起來很丑陋。

所以主要的問題是...我如何才能獲得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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM