我是 python 新手,正在撰寫一個簡單的基于文本的冒險游戲,我收到一條錯誤訊息“NameError: name 'bedroom' is not defined”。我最初有一堆函式定義,在這種情況下一切正常,但決定將它們分組到錯誤開始的類中。
class Rooms:
def start():
print(".....")
answer = input(">")
if "1" == answer
bedroom() #this is the line the error is coming from
def bedroom():
print(".....")
uj5u.com熱心網友回復:
你可以這樣做:或添加一個self作為函式的引數,或者你可以呼叫做 CLASS_NAME.FUNC_NAME() 所以你應該這樣做:
class Rooms:
def bedroom(self):use self as a parameter
print(".....")
def start(self): #use self as a parameter
print(".....")
answer = input(">")
if "1" == answer:
self.bedroom() #nothe the use of self
或者你可以這樣做:
class Rooms:
def bedroom():
print(".....")
def start():
print(".....")
answer = input(">")
if "1" == answer
Rooms.bedroom() #Fixed
uj5u.com熱心網友回復:
回答
在您的情況下,您需要創建一個代表類本身的實體,以便其他函式可以相互呼叫并共享變數和資料。最常用的名稱是self.
在開始之前必須定義bedroom()并不是真正必要的。
class Rooms:
def start(self): # Call 'self' to enable use
print(".....") # of other variables and
answer = input(">") # functions
if "1" == answer:
self.bedroom()
def bedroom(self):
print(".....")
更多幫助
在OOP中閱讀本指南以了解在 Python 中使用 OOP 的基礎知識和示例
uj5u.com熱心網友回復:
要從同一個類中呼叫方法,您需要將self用于參考當前類的引數傳遞給該方法并bedroom()在這種情況下self.bedroom()呼叫它,而不是像這樣呼叫它bedroom():
class Rooms:
def bedroom(self):use self as a parameter
print(".....")
def start(self): #use self as a parameter
print(".....")
answer = input(">")
if "1" == answer:
self.bedroom() #note the use of self
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411685.html
標籤:
上一篇:將多個字串傳遞給函式并附加到串列
