2016-05-27 11 views
0

Ich schreibe TRW-Algorithmus im POX-Controller mit Python, wo ich einem Host zum ersten Mal einen Zeitraum zum ersten Mal einen TRW-Algorithmus sendet sagt, dass erste Paket von internen Host zu externen Host daher ohne Installation Flussregel i eine Funktion zu tun haben, gesendet wird zum Ziel gesendet wrtn dass alsTypeError: nicht unterstützte Operandentypen für -: 'float' und 'builtin_function_or_method'

localhostrecord{} 
class FCC_Queue_Entry (object): 
"""this class object will be kept into FCC_Queue list of IntHostEntry class object""" 
whenInitiated=0 
dip=0 
status=0 
protocol=0 
def __init__ (self,whenInitiated,dip,status,protocol): 
    self.whenInitiated = whenInitiated 
    self.dip = dip 
    self.status = status 
    self.protocol = protocol 

und

class IntHostEntry (object): 
likelihood=0.0 
credit=0 
zeroCreditTime=0 
PCH=[] 
FCC_Queue=[] 

„“ "PCH hält Alle Host-Adressen, die zuvor mit receive kontaktiert wurden r "" "
""" hält Objekt der FCC_Queue_Entry Klasse ""“

def __init__ (self,likelihood,credit,zeroCreditTime): 
self.likelihood = likelihood 
self.credit = credit 
self.zeroCreditTime = zeroCreditTime 

danach i-Code-Paket zu senden, wie

geschrieben haben
def send_Packet(event, ip_packet, ip_protocol, dpidstr, buffer_id, src_port, out_port): 
    src = ip_packet.srcip 
    dst = ip_packet.dstip 
    if src not in localhostrecord: 
    log.info("local host %s is sending for the firsr time" %(src)) 
    t = datetime.time(0, 0, 0) 
    newIntHost = IntHostEntry(1.0,10,t.second) 
    localhostrecord[src] = newIntHost 

    if dst not in localhostrecord[src].PCH: 
    localhostrecord[src].PCH.append(dst) 
    newEntry = FCC_Queue_Entry(time.clock(),dst,status[0],ip_protocol) 
    localhostrecord[src].FCC_Queue.append(newEntry) 

, nachdem ich für Timeout irgendwann bin Überprüfung mit

if(time.clock() - localhostrecord[address].FCC_Queue[index].whenInitiated>=timeout): 

wo

localhostrecord[address].FCC_Queue[index].whenInitiated =time.clock() 

in einer anderen Funktion geschrieben

i Störung erhalte

TypeError: unsupported operand type(s) for -: 'float' and 'builtin_function_or_method' 

sagen, wie

+1

Geben Sie bitte 'Druck localhostrecord [Adresse] .FCC_Queue [index] .whenInitiated' vor der Anweisung und sehen, was es zeigt. –

+1

Ich verstehe die Fehlermeldung. Aber ich verstehe deine Frage nicht. Können Sie bitte Ihre Frage verbessern? Wie schreibt whenInitiated in anderer Funktion? Vielleicht hast du vergessen '' '' 'nach dem Aufruf der Funktion' time.clock' irgendwo – qvpham

+0

yeah du hast recht ich habe vergessen zu schreiben() nach time.clock danke @julivico –

Antwort

0

Welche Python Sie dieses Problem zu lösen, ist zu sagen, dass Sie die - Operator auf ein verwenden versuchen float (Ihr time.clock()) und auf einem uncalled function (localhostrecord[address].FCC_Queue[index].whenInitiated)

Stellen Sie sicher, rufen Funktion, es zu benutzen ist Rückgabewert (man beachte die () am Ende whenInititated):

if(time.clock() - localhostrecord[address].FCC_Queue[index].whenInitiated()) >=timeout: 
Verwandte Themen