jak znaleźć obiekt klasy o danym argumencie

0

Przypuśćmy, że mam klasę z danym argumentem: id_obiektu.

Jeżeli stworzę kilka tysięcy obiektów tej klasy i chcę wywołać jeden, ale nie po jego nazwie, tylko id_obiektu.

Czyli coś takiego:
jeżeli istniej to znajdź obiekt o id i wywołaj dla niego metodę.

Ktoś może doradzić?

2

Stwórz może słownik o elementach [id_obiektu, obiekt]. A w konstruktorze klasy dopisuj co trzeba do słownika.

0

dzięki, to teraz wiem na co mi się przydadzą słowniki :-D

0

Jeszcze jeden problem się pojawił, mianowicie próbuję w/g dokumentacji zmienić zmienną globalną, jednak w efekcie jej wartość się nie zmienia "unit_id":

main:

 
from player import *
def main():
    gracz = Player("player", "2342")
    #gracz.print_instance()
    #gracz.get_stream("print 'wyslano strumien'")
    gracz2 = Player("player2", "23422")
    gracz2.print_instance()
    gracz2.create_unit()
    gracz2.create_unit()
    gracz.create_unit() 
    print unit_id #tutaj ma zwrocic wartosc globala
    
if __name__ == '__main__':
    main()

player.py

from unit import *

player_id = 0

class Player:
    __id = 0;
    __address = "00.00.000.000";
    __name = "none"
    
    def __init__(self, name, address):
        self.__name = name
        self.__address = address
        global player_id
        player_id  += 1
        self.__id = player_id
        print "object created"
        
    def get_stream(self, data):
        validate(data)
        exec data
        return
    
    def send_stream(self, data):
        pass
    
    def validate(data):
        pass
    
    def create_unit(self):
        unit = Unit()
        return
    
    def print_instance(self):
        print self.__id
        print self.__address
        print self.__name
        return

unit.py

unit_id = 0

class Unit:
    __id = 0
    __player_id = 0
    __power = 0
    __energy = 0
    __can_move = False
    
    def __init__(self):
        globals()['unit_id'] += 1 #tu jest właśnie problem, bo przy print daje mi nadal wartość 0
        print "unit created"

Pierwszy dzień z Pythonem i nawet przyjemnie się w nim pisze - bez dodatkowych filozofii

Edit:
poradziłem sobie, zrobiłem klasę z globanymi zmiennymi

1 użytkowników online, w tym zalogowanych: 0, gości: 1