Czytam o klasach w Pythonie (3.4) iz tego co rozumiem, wydaje się, że każdy nowy obiekt ma swoje własne instancje metod związanych.Czy Python naprawdę tworzy wszystkie powiązane metody dla każdej nowej instancji?
class A:
def __init__(self, name):
self.name = name
def foo(self):
print(self.name)
a = A('One')
b = A('Two')
print(a.foo == b.foo)
Dane wyjściowe to False
.
Wydaje mi się to marnowaniem pamięci. Pomyślałem, że wewnętrznie a.foo
i b.foo
wskazywałoby jakoś wewnętrznie na jedną funkcję w pamięci: A.foo
gdzie self
jako instancja klasy zostanie przekazana.
Zakładam, że może nie można go łatwo zaimplementować w języku.
Czy każda nowa instancja zawiera również nowe wystąpienia powiązanych metod?
Jeśli tak, czy nie szkodzi to wydajności lub nie czyni przypadku tworzenia nowych obiektów bardziej ostrożnie niż w innych językach, w których metody są "udostępniane" między obiektami takimi jak w Java
?
Czy możesz linkować do czegoś, co czytasz, co sprawia, że tak myślisz? –
@SotiriosDelimanolis 'X(). F == X.f' spowoduje" False "(gdzie f jest metodą instace). To wystarczy, aby tak myśleć. –
Każda związana metoda odwołuje się do tej samej podstawowej funkcji. Obciążenie pamięci dla owijki jest minimalne. – chepner