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