因此,爲了更好地理解概念,爲了實踐Python,更具體地理解面向對象編程,我編寫了這個簡單的腳本。然而,當我嘗試啓動一個「猴子」對象時,最終發生的事情是Python無限期地添加了我的第一個猴子對象的名字......我是否接近OOP?如果是的話,我要去哪裏錯了,因爲我不能告訴... 感謝面向對象的Python
#! usr/bin/python
monkeylist = []
class monkey:
def __init__(self, name):
self.name = name
self.banana = []
monkeylist.append(self.name)
def addbanana(self, kind):
self.banana.append(kind)
class monkeys:
def __init__(self, monkeylist):
self.allmonkeys = monkeylist
self.monkeydict = {}
for name in self.allmonkeys:
self.allmonkeys[name] = monkey(name)
def addbanana(self, name, kind):
self.monkeydict[name].addbanana(kind)
確切的輸入和輸出是這樣的......
python -i objtest.py
>>> bob = monkey("bob")
>>> test = monkeys(monkeylist)
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "objtest.py", line 15, in __init__
self.allmonkeys[name] = monkey(name)
File "objtest.py", line 7, in __init__
monkeylist.append(self.name)
KeyboardInterrupt
我不能發現錯誤。你能顯示完整的代碼,包括你的輸出嗎? – Achim 2011-04-20 23:01:38
這似乎適用於我?我在做m =猴子(monkeylist);打印類型(m),它正確地返回「類型」實例'「。正如Achim所說,你可以發佈其餘的代碼並顯示輸出。 – monojohnny 2011-04-20 23:03:02
未來的兩個小調:(1)爲了約定,類名應該在'CamelCase'(即'Monkey'和'Monkeys')和變量/成員/函數/方法名應該是'lowercase_with_underscores'。 (2)類應該從Python 2.x中的'object'('class Monkey(object)')派生,因爲「舊式類」只是令人頭痛的難題。 – delnan 2011-04-20 23:07:38