Python返回内存指针位置而不是值



我正在尝试创建一个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

您实际上并不是在调用划时代时间函数:

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
>>>

尝试使用:

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()

最新更新