Python:通过调用相同名称的局部变量来定义新变量

2024-09-27 23:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个方法,根据特定条件为局部变量赋值。然后我想把这个值转换成函数外部的一个变量,以便在其他地方使用它。这是一个文本冒险我正在工作。你知道吗

    class Player(object):
        def __init__(self, player_name):
            self.player_name = player_name
        def JobType(self):
            print("Please select your job:")
            print(" ")
            print("1. name1")
            print("2. name2")
            print("3. name3")
            print("4. name4")
            global jobChoice
            jobChoice = input()
            jobs = ["name1", "name2", "name3", "name4"]
            if jobChoice == 1:
                jobChoice = jobs[0]
            elif jobChoice == 2:
                jobChoice = jobs[1]
            elif jobChoice == 3:
                jobChoice = jobs[2]
            elif jobChoice == 4:
                jobChoice = jobs[3]
            else:
                print "Invalid job"
            print("You are now a " + jobChoice)
            return jobChoice
        def JobStats(self):
            playerHP = 0
            playerAttack = 0
            playerDefense = 0
            playerLuck = 0
            if jobChoice == "name1":
                playerHP = random.randint(70, 85)
                playerAttack = random.randint(6, 9)
                playerDefense = random.randint(6, 11)
                playerLuck = random.randint(14, 17)
            elif jobChoice == "name2":
                playerHP = random.randint(70, 85)
                playerAttack = random.randint(7, 10)
                playerDefense = random.randint(6, 11)
                playerLuck = random.randint(3, 6)
            elif jobChoice == "name3":
                playerHP = random.randint(120, 200)
                playerAttack = random.randint(200, 600)
                playerDefense = random.randint(6, 11)
                playerLuck = random.randint(200, 600)
            elif jobChoice == "name4":
                playerHP = random.randint(70, 85)
                playerAttack = random.randint(8, 11)
                playerDefense = random.randint(6, 11)
                playerLuck = random.randint(7, 10)
            return(playerHP, playerAttack, playerDefense, playerLuck)

另外,工作选择是一个全球。我不想这样,但这也是我提取局部变量值以用于其他函数的问题的一部分。你知道吗

因此,如果我希望一个新的playerLuck变量与方法中的本地playerLuck变量jobStats具有相同的值,我将如何获得该值?地址:

    playerLuck = ?

Tags: nameselfdefjobsrandomplayerprintrandint
1条回答
网友
1楼 · 发布于 2024-09-27 23:22:20

“提取局部变量的值”应采用以下两种方法之一:

  1. 明确return该变量;或
  2. 使其成为类或实例属性,以便可以访问Class.attributeinstance.attribute。你知道吗

既然已经有了类,就可以很容易地拥有实例属性self.jobChoiceself.playerLuck。然后您可以轻松访问它们:

player = Player(...)
...
if player.jobChoice ...:

相关问题 更多 >

    热门问题