Другое поведение синглтона при использовании класса и dict для хранения экземпляраPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Другое поведение синглтона при использовании класса и dict для хранения экземпляра

Сообщение Anonymous »

Почему эти два базовых класса приводят к разному поведению дочерних объектов?
class Base:

_instance: "Base" = None

def __new__(cls) -> "Base":
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance

class A(Base):
def foo(self):
return "foo"

class B(Base):
def quz(self):
return "quz"

a = A()
b = B()

print(id(a))
print(id(b))

140035075937792
140035075948400

С другой стороны
from typing import Dict

class Base:

_instances: Dict[int, "Base"] = {}

def __new__(cls) -> "Base":
if 0 not in cls._instances:
cls._instances[0] = super().__new__(cls)
return cls._instances[0]

class A(Base):
def foo(self):
return "foo"

class B(Base):
def quz(self):
return "quz"

a = A()
b = B()

print(id(a))
print(id(b))

140035075947296
140035075947296


Подробнее здесь: https://stackoverflow.com/questions/791 ... e-instance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»