В Python, если я определю три класса:
class A:
name = 'oliver'
hailstone_ending = [4,2,1]
class B:
def __init__(self):
self.name = 'oliver'
self.hailstone_ending = [4,2,1]
class C:
pass
c = C()
c.name = 'oliver'
c.hailstone_ending = [4,2,1]
Под капотом функционирует ли поиск членов одинаково для каждого класса? Кажется, что A
понадобится только в словаре для поиска членов для всех экземпляров; C
, с другой стороны, потребуется использовать словарь, хранящийся в каждом из этих экземпляров. Если бы переводчик был очень умен, теоретически он мог бы заметить, что все экземпляры B
должны включать членов name
и hailstone_ending
; следовательно, это может быть эквивалентно A
.
Но, с другой стороны, если операция del
разрешена в словаре, который ищет членов класса, механизм поиска во всех этих классах может быть эквивалентен, поскольку доступные члены будут зависеть от экземпляра.
Меня интересует, что у меня был какой-то код, который создал несколько тысяч классов типа C
, и я заметил, что он очень медленный и требует много памяти. Недавно я переписал его по-другому, и он кажется мне более эффективным (но я не проверял его строго, и поэтому он может быть таким же).
Большое спасибо за понимание!