2016-03-23 18 views
0

yerine bellek işaretçisi konumunu döndürüyor Yinelemeli değerler oluşturmak için geçerli epoc saatini bir dizenin sonuna ekleyen bir python komut dosyası oluşturmaya çalışıyorum. Sorun, bu BOŞTA değerinden ziyade bellek işaretçi konumunu saçıyor ve neden emin değilim:Python değeri

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

Çıktı: Ben sınıfa dışına çıkarmak ve varsa

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

yapmak küresel bir değişken çalışır:

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

Çıktı:

Storm1458766044 Trooper1458766044 

cevap

3

Sen aslında EPOCH_TIME tarihinden işlevini arayarak konum:

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

Bunun yerine ne zaman farkı görmek:

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

Bu tam olarak (dataGen.epochTime() sonra parens dikkat edin) bununla aynı:

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

Şununla deneyin:

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