【问题标题】:Python returning memory pointer location rather than valuePython返回内存指针位置而不是值
【发布时间】:2016-03-23 20:57:10
【问题描述】:

我正在尝试创建一个 python 脚本,将当前 epoc 时间附加到字符串的末尾以创建迭代值。问题是 IDLE 吐出的是内存指针位置而不是值,我不知道为什么:

class dataGen:

    def epochTime(self):
            epoch_time = int(time.time())
            return epoch_time

    def firstName():
            firstName = 'Storm' + str(dataGen.epochTime)
            return firstName

    def lastName():
            lastName = 'Trooper' + str(dataGen.epochTime)
            return lastName 

def main():
    t = dataGen.firstName()
    t2 = dataGen.lastName()        
    print(t, t2)

if __name__ == '__main__':
    main()

输出:

Storm<function dataGen.epochTime at 0x0340A150> Trooper<function dataGen.epochTime at 0x0340A150>

如果我把它从课堂上拿出来,让它成为一个全局变量,它就可以工作:

epoch_time = int(time.time())   

class dataGen:

        def firstName():
                firstName = 'Storm' + str(epoch_time)
                return firstName

        def lastName():
                lastName = 'Trooper' + str(epoch_time)
                return lastName 

def main():
        t = dataGen.firstName()
        t2 = dataGen.lastName()        
        print(t, t2)

if __name__ == '__main__':
        main()

输出:

Storm1458766044 Trooper1458766044

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您实际上并没有调用 epoch_time 函数:

    def firstName():
            firstName = 'Storm' + str(dataGen.epochTime)
            return firstName
    

    当你这样做时会看到不同之处:

    def firstName():
            firstName = 'Storm' + str(dataGen.epochTime())
            return firstName
    

    (注意dataGen.epochTime() 后面的括号)

    和这个完全一样:

    >>> def f():
    ...     return 100
    ...
    >>> f
    <function f at 0x107d687d0>
    >>> f()
    100
    >>>
    

    【讨论】:

      【解决方案2】:

      尝试:

      class dataGen:
      
          def epochTime(self):
              epoch_time = int(time.time())
              return epoch_time
      
          def firstName(self):
              firstName = 'Storm' + str(self.epochTime())
              return firstName
      
          def lastName(self):
              lastName = 'Trooper' + str(self.epochTime())
              return lastName 
      
      def main():
          # Creates an object of dataGen class
          t = dataGen()
          print(t.firstName(), t.lastName())
      
      if __name__ == '__main__':
          main()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多