因此,为了更好地理解概念,为了实践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