【问题标题】:How to pass variable of one method in other method within the same class in Python如何在Python中的同一类中的另一个方法中传递一个方法的变量
【发布时间】:2016-11-19 01:22:05
【问题描述】:

我是 python 新手,并试图找出我的第一个 python 代码中的问题。我在方法 parameter 中从用户那里获取输入 temp,我想将此 tempmake_item 方法中的另一个变量 oven_temp 进行比较。但是我得到了一个NameError 那个名字temp 没有定义。我在这里阅读了一些帖子,其中提到我必须从方法返回值。我退回了它,但不知道如何继续。

    class maker:
        def parameter(self):
            temp = int (input ('At what temperature do you want to make \n'))
            return temp


        def make_item (self):
            def oven (self):
                oven_temp = 0
                while (oven_temp is not temp):
                    oven_temp += 1
                    print ("waiting for right oven temp")

            oven(self)


    person = maker ()
    person.parameter()
    person.make_item()

【问题讨论】:

    标签: python class methods


    【解决方案1】:

    以下内容应该可以解决您的问题。基本上,您希望将要在方法之间传递的变量存储为类的成员。为此,您可以将 self 参数的属性分配给函数。

     class maker:
        def parameter(self):
            self.temp = int (input ('At what temperature do you want to make \n'))
    
    
        def make_item (self):
            def oven ():
                oven_temp = 0
                while (oven_temp is not self.temp):
                    oven_temp += 1
                    print ("waiting for right oven temp")
    
            oven()
    
    
    person = maker ()
    person.parameter()
    person.make_item()
    

    【讨论】:

      【解决方案2】:

      把它保存在你的self

      class MyMaker:
          def ask_temperature(self):
              self.temp = int(input('Temperature? \n'))
      
          def print_temperature(self):
             print("temp", self.temp)
      

      试试看:

      > maker = MyMaker()
      > maker.ask_temperature()
      Temperature?
      4
      > maker.print_temperature()
      temp 4
      

      【讨论】:

        【解决方案3】:

        这是关于如何从一个方法返回值并将其传递给另一个方法并最终打印结果的另一种方法。

        class Maker():
        
            def parameter(self):
                temp = int(input('At what temperature do you want to make \n'))
                return temp
        
            def make_item(self,temp):
                def oven():
                    oven_temp = 0
                    while (oven_temp is not temp):
                        oven_temp += 1
                        print ("waiting for right oven temp")
                    return oven_temp
        
                return oven()
        
        
        person = Maker()
        val = person.parameter()
        print(person.make_item(val))
        

        输出:

        waiting for right oven temp
        waiting for right oven temp
        waiting for right oven temp
        waiting for right oven temp
        4
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-28
          • 1970-01-01
          • 1970-01-01
          • 2021-04-12
          • 1970-01-01
          • 1970-01-01
          • 2014-11-07
          相关资源
          最近更新 更多