美好的一天......
我在课堂上的学习过程中有点挣扎。让我展示我的代码,以及正在发生的事情。
from random import randint
print "Start"
class Simulation (object):
def __init__(self):
self.bankroll= 5000
self.bet=0
self.betLevel= 0
self.betList=[5,5,5,10,15,25,40,65,100]
self.wlist=[]
self.my_file=open("output.txt","w")
self.winningNumber=0
self.myNumber=[4,5,7,8]
self.testCase=1
self.my_file.write("Test case Bet Number Outcome Bankroll")
def gamble(self):
self.bet=self.betList[self.betLevel]
if self.bankroll < 1000 :
self.bet= 5
self.winningNumber= randint(0,36)
if self.winningNumber in self.myNumber:
win()
else:
lose()
def win(self):
self.bankroll +=(17*self.bet)
self.wlist= [self.testCase,self.bet,self.winningNumber,"WIN",self.bankroll]
self.betLevel=0
write()
def lose(self):
self.bankroll -=self.bet
self.wlist= [self.testCase,self.bet,self.winningNumber,"LOSE",self.bankroll]
self.betLevel +=1
write()
def write(self):
self.my_file.write(" ".join(self.wlist))
def startSimulation(self):
for i in range (100):
gamble()
closeFile()
def closeFile(self):
self.my_file.close()
mySimulation= Simulation()
mySimulation.startSimulation()
print "DONE"
所以在这段代码中,我正在尝试使用奇怪的投注系统来模拟轮盘游戏。它的作用类似于鞅,但我没有加倍,而是遵循斐波那契序列。
所以我的问题是我收到了这个错误:
Traceback (most recent call last):
File "D:\Roulette simulation\python 3.py", line 44, in <module>
mySimulation.startSimulation()
File "D:\Roulette simulation\python 3.py", line 38, in startSimulation
gamble()
NameError: global name 'gamble' is not defined
我的问题。为什么?我的意思是,我在同一个班级调用一个函数?为什么我收到全局错误?
答案 0 :(得分:2)
在方法中,您有self
作为对实例的引用。您可以通过该引用访问该实例上的方法:
self.gamble()
此处没有全局gamble
功能;该方法是Simulation
类的一部分。这适用于所有方法;例如,您还必须在closeFile
上致电lose
,win
,write
和self
。
答案 1 :(得分:0)
尝试运行
self.gamble()
在类函数中,self表示类本身(有人使用'cls'而不是'self'),所以 self.gamble 表示此类的赌博功能
如果你想在类归属的位置运行一个函数
>>> class P:
name = 'name'
def getage(self):
return 18
age = property(getage)
>>> p = P()
>>> p.age
18
>>>