簡體   English   中英

未定義名稱“函數名稱”

[英]Name “function name” is not defined

我一直試圖完成OOP的一個主題,但我無法弄清楚我的函數定義有什么問題。 我是這種語言的新手,已經搜索過論壇,但我找不到任何有用的東西。

錯誤消息:回溯(最近一次調用最后一次):
文件“/home/main.py”,第44行,in
添加(x,y)
NameError:未定義名稱“add”

這是我寫的程序。

class Complex(object):
def __init__(self, r = 0, i = 0):
   self.r = r
   self.i = i

def __str__ (self):
   return "%s + i%s" % (self.r, self.i)

def add (self, other):
   summ = Complex()
   summ.r = self.r + other.r
   summ.i = self.i + other.i
   return "Sum is %d" % summ

def dif (self, other):
   dif = Complex()
   dif.r = self.r - other.r
   dif.i = self.i - other.i 
   return dif

def multiply (self, other):
   multiply = Complex()
   multiply.r = self.r * other.r 
   multiply.i = self.i * other.i
   return "%d" % (-1 * multiply.r * multiply.i)

def divide (self, other):
   divide = Complex()
   divide.r = self.r / other.r
   divide.i = self.i / other.i 
   return "%d" % (divide.r / divide.i)

x = Complex()
y = Complex()
x.r = int(input("Type in real part of x: \n"))
x.i = int(input("Type in imaginary of x: \n"))
print (x, "\n")
y.r = int(input("Type in real part of y: \n"))
y.i = int(input("Type in imaginary of y: \n"))
print (y, "\n")
add(x, y)

add()函數是Complex類的成員,但您自己調用它。

你需要這樣稱呼它

x.add(y)

當函數是類的成員時,如下所示:

class Complex(object):
    def add (self, other):
        # Do stuff

調用該函數的對象自動作為self傳遞。

因此,如果你調用x.add(y)self將是xother將是y

如果add是類Complex的方法,則必須編寫x.add(y)而不是add(x,y)。

我知道它在Python中令人困惑。 您總是需要將“self”應用為方法的第一個參數,盡管它不是參數,而是您調用其方法的對象。

暫無
暫無

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

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