首页 > 解决方案 > 打印使用函数调用存储的输入

问题描述

我已经使用from_input函数来存储用户输入。我试图在 pythontutor 上可视化以下代码以及我可以从中理解的内容,输入值在函数返回__init__后存储在函数中from_input

现在问题开始于何时random_fortune被调用,我正在尝试打印已存储的名称。我已经尝试过self.namename但它给出了错误。

import random
class Fortune:

    def  __init__(self, name, color, age):
        self.name = name
        self.color = color
        self.age = age

    @classmethod
    def from_input(self):
        name = input('Name: ')
        color = input('Color: ')
        age = int(input('Age: '))
        return self(name,color,age)

    @staticmethod
    def random_fortune():
        print("hi" + name)
        random_no = random.randint(1, 9)
        if random_no == 1:
            print("you are in luck today")
        else:
            print("Bad Luck mate")


user = Fortune.from_input()
Fortune.random_fortune()

标签: pythonpython-3.x

解决方案


您创建了一个 Fortune 对象但没有使用它。此外,您的 random_fortune 不是静态方法,因为您想在其中使用类属性“name”。所以这应该工作:

import random class Fortune: 
    def __init__(self, name, color, age): 
        self.name = name 
        self.color = color
        self.age = age

   @staticmethod
   def from_input(self): 
       name = input('Name: ') 
       color = input('Color: ') 
       age = int(input('Age: ')) 
       return Fortune(name,color,age)

   def random_fortune(self): 
       print("hi" + self.name) 
       random_no = random.randint(1, 9) 
       if random_no == 1: 
           print("you are in luck today") 
       else: 
           print("Bad Luck mate") 

user = Fortune.from_input()
user.random_fortune()

推荐阅读