当前位置: 代码迷 >> python >> Python:Class:在同一个类中调用一个函数
  详细解决方案

Python:Class:在同一个类中调用一个函数

热度:89   发布时间:2023-07-14 08:47:42.0

美好的一天..

我在课堂上的学习过程中有点挣扎。 让我展示我的代码,以及发生了什么。

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

我的问题。 为什么? 我的意思是,我在同一个班级调用一个函数? 为什么我收到了全局错误?

在方法中,您可以将self作为对实例的引用。 您可以通过该引用访问该实例上的方法:

self.gamble()

这里没有全球gamble功能; 该方法是Simulation类的一部分。 这适用于所有方法; 例如,你必须打电话给closeFilelosewinwrite self

试试跑步

self.gamble()

在类函数中,self表示类本身(有人使用'cls'而不是'self'),所以self.gamble意味着这个类的赌博功能

如果你想在类归属的位置运行一个函数

>>> class P:
    name = 'name'
    def getage(self):
        return 18
    age = property(getage)


>>> p = P()
>>> p.age
18
>>> 
  相关解决方案