Почему эти два базовых класса приводят к разному поведению дочерних объектов?
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
Другое поведение синглтона при использовании класса и dict для хранения экземпляра ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к атрибуту экземпляра родительского класса из экземпляра дочернего класса?
Anonymous » » в форуме Python - 0 Ответы
- 52 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Pydantic не проверяет значения DICT при назначении неожиданного типа для значений DICT
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Pydantic не проверяет значения DICT при назначении неожиданного типа для значений DICT
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-