您好我正在学习python,它也是我的第一语言。我想弄清楚课程是如何工作的。我有这个小代码,经过一周的搜索,我无法让它工作。谢谢你的帮助。
此外,我正在试图找出getattr和super做的事情。我阅读了文档,但我不容易理解。英语不是我的母语,有时候有点难以理解。如果你能解释这两件事,或者你知道任何网站以简单的方式解释它,我会非常感谢你。
这是代码:
import sys
class Map(object):
dicti = {'stuff': stuff(),
'more_stuff': more_stuff()
}
class Stuff:
def stuff(self):
print "did it work?"
next = raw_input("type next: ")
if next == "next":
return 'more_stuff'
else:
print "what? lets try again."
return 'stuff'
class MoreStuff:
def more_stuff(self):
print "ok"
next = raw_input('type next: ')
if next == "next":
return 'stuff'
else:
print "bye."
sys.exit(0)
class NewClass(Map):
def __init__(self, themap):
self.themap = themap
def Continu(self):
next = self.themap
while True:
print "----"
room = next()
a_test = NewClass('stuff')
a_test.Continu()
答案 0 :(得分:1)
您正在将字符串'stuff'
传递给NewClass
,因此正在变为self.themap
以后您要分配next = self.themap
,所以现在next
也是对字符串'stuff'
的引用。
room = next()
将失败,因为您无法调用字符串
答案 1 :(得分:0)
你班级的问题在于它似乎没有代表任何东西(对不起,如果那是苛刻的)。而不是修复你的代码,我只会向你展示几个例子。
这些是我写的示例类。第一个是荒谬的,但实际上很简单,可以教你一些东西。它使用的hasattr
距离getattr
不远。
您的类可以包含逻辑,但尝试将它们视为管理对象信息的方法。我的意思是 object 在python意义上和单词的正常含义中。
另外,我注意到你在Map
下缩进了一些其他类。现在只需将类作为单独的东西。缩进那些类似的东西并没有给予他们与Map
class OppMan:
def __init__(self, awake = False):
self.truth = awake
self.answers = 0
def echo(self, userIn):
if type(userIn) == (int or float):
answer = -1*self.truth*userIn
elif hasattr(userIn, '__str__') or hasattr(userIn, '__repr__'):
answer = 'not '*self.truth + str(userIn)
else:
try:
answer = -1*userIn
except:
answer = 'I am only human'
self.answers += 1
return answer
使用示例:
Barney = OppMan(True)
print(Barney.echo(420))
print(Barney.echo('yours'))
print(Barney.echo(['a','b','c']))
print(Barney.answers)
Betty = OppMan()
print(Betty.echo('you figure it out'))
这个就像分数一样:
class Rational:
def __init__(self, numer, denom):
self.n = numer
self.d = denom
def __add__(self, other):
return Rational((self.n*other.d)+(self.d*other.n), self.d*other.d)
def __mul__(self, other):
return Rational(self.n*other.n, self.d*other.d)
def __str__(self):
return str(self.n) + '/' + str(self.d)
使用示例:
foo = Rational(3,5)
bar = Rational(1,7)
print(foo+bar)
foo = Rational('3','5')
bar = Rational(1,2)
print(foo+bar)
我不确定你要对“房间”,字典等做什么,但研究这些并尝试找到一些简单的问题来解决。可能需要一段时间来弄清楚这些是如何工作的,但最后你会对课程有更多了解。