Wpis z mikrobloga

#python #oop #programowanie #programowanieobiektowe
Mirki programiści pomuszcie proszę początkującemu, bo nie bardzo rozumiem co tu się dzieje :(
Definiuję klasę Dog, która posiada zmienną name i słownik z cechami nazwany attributes.

Teraz, wywołuję nowe obiekty tej klasy w globalnym słowniku "psy":

psy = {}

class Dog:
_name = ''
attributes = {}

def init(self,name):
__self.name = name
__print("Created %s") % self.name

def str(self):
___return "Object named: %s \nAttributes:%s" % (self.name,self.attributes)

psy['burek'] = Dog("burek")
psy['burek'].attributes['szczeka'] = "tak"`

psy['zocha'] = Dog("zocha")
psy['zocha'].attributes['szczeka'] = "nie"

print psy['burek']
print psy['zocha']

Output wygląda tak:

Created burek
Created zocha
Object named: burek
Attrubutes:{'szczeka': 'nie'}
Object named: zocha
Attrubutes:{'szczeka': 'nie'}

Dlaczego drugi obiekt otrzymał te same cechy co pierwszy?
Myślałem, że struktura słownika pozwoli na łatwe odwołanie się do istniejącego obiektu poprzez unikalny klucz w słowniku. Na zasadzie:

klucz :
Czy mój zamysł jest błędny? W jaki sposób odnosić się do odbiektów jak nie przez słownik, tak, żeby móc je zidentyfikować unikalnym id?

Nie rozumiem dlaczego odwołując się do konkretnego obiektu dostaję złe atrybuty :(
Przecież to zocha nie szczeka, a burek tak.
(,)
  • 4