我最近決定開始學習python。我大部分時間都使用C++,有些東西對我來說非常混亂。更正python中已初始化對象的正確方法
這裏是我的代碼,我有(全代碼在這裏:http://pastebin.com/tj3qJnvM)的問題
class Display:
def __init__(self, background):
resolution = (800, 600)
screen = pygame.display.set_mode(resolution)
background = pygame.Surface(screen.get_size())
background.fill((255, 255, 255))
background = background.convert()
def init(map, background):
pygame.init()
display = Display(background)
map.draw(background)
def main():
background = None
init(map, background)
當我打電話display = Display(background)
在init
(61行),它應該初始化背景,因此它可以在未來使用線。相反,我得到錯誤說背景是無。
如果我理解正確,這是由於背景被設置爲None和None不可變因此它在Display構造函數中創建局部變量背景。
我該如何處理這種情況?
我知道最好是將背景設置爲Display類的成員,但我想了解如何創建類似於在C中聲明指針/引用的東西。然後在某些函數中初始化它。 這將是有用的,然後將它傳遞給一些功能。
是否有可能在Python中或每次都需要解決方法?
請在問題中加上[mcve]。另外,你並沒有使用'self.',因爲我認爲它是實例屬性;閱讀教程。 – jonrsharpe
對不起,現在的例子應該更具可讀性。我想從其他函數的main中初始化背景,所以我不想在這種情況下使用self。 – Thun
也許已經閱讀了教程的[第9節,類](https://docs.python.org/3/tutorial/classes.html)。看起來你需要花更多的時間學習如何用Python的方式來完成任務。 。 'display'''是'''Display'''的一個實例,它的屬性可以通過''display.attribute'''訪問。 - 但是你寫類的方式沒有任何實例屬性。你也應該閱讀[命名和綁定](https://docs.python.org/3/references/executionmodel.html#naming-and-binding)。 – wwii