Форум сайта python.su
Есть необходимость объявить внутри класса атрибут, класс которого соответствует классу, в котором он объявлен. Во как закрутил :) Например
class superClass:
someVar = superClass()
...
Офлайн
Используй перегрузку __getattr__
Офлайн
Можно уже после объявления класса сделать присвоение
>>> class A(object):
… var1=None
…
>>> A.var1=A()
>>> A
<class ‘__main__.A’>
>>> A.var1
<__main__.A object at 0x009E1E10>
А если бы можно было сразу в объявлении класса это делать, мне кажется, тогда случилась бы бесконечная рекурсия создания объектов.
Офлайн
Striverclass Fake(object):
А если бы можно было сразу в объявлении класса это делать, мне кажется, тогда случилась бы бесконечная рекурсия создания объектов.
Офлайн
вопрос как всегда один: нафига такие извраты? Это вам не Си. Тут готовые списки есть.
Офлайн
Поясни. Я не улавливаю, причем тут списки.
У меня аналог указанного класса используется для подмены объектов.
Офлайн
j2aВ сях для организации связного списка обычно необходимо в объявлении структуры использовать указатель на эту же структуру. Тот кто писал или видел такие вещи помнит этот трюк Мюнхгаузена.
Поясни. Я не улавливаю, причем тут списки.
У меня аналог указанного класса используется для подмены объектов.
Отредактировано (Сен. 13, 2007 22:41:00)
Офлайн
bialixЕсть deprecated-класс. Его изменять нельзя (он вне нашего контроля). Чтобы была гарантия, что этот класс больше нигде не используется, вместо него ставится вот такая заглушка, которая при любом обращении к ней “ругается” (warnings.warn).
А вот я не улавливаю, что значит подмена объектов и зачем укладывать объект-экземпляр класса внутрь экземпляра класса. Матрешка получается. Может это такая военная хитрость? Честно не могу придумать для чего это. Хоть намекните в каких задачах это используется.
Офлайн
j2aВот это уже ближе к теме, но это не одно и тоже, что в исходном посте.bialixЕсть deprecated-класс. Его изменять нельзя (он вне нашего контроля). Чтобы была гарантия, что этот класс больше нигде не используется, вместо него ставится вот такая заглушка, которая при любом обращении к ней “ругается” (warnings.warn).
А вот я не улавливаю, что значит подмена объектов и зачем укладывать объект-экземпляр класса внутрь экземпляра класса. Матрешка получается. Может это такая военная хитрость? Честно не могу придумать для чего это. Хоть намекните в каких задачах это используется.
Офлайн
Угу, в моем случае – monkey patching. А вот зачем это нужно топикстартеру – не понятно.
Офлайн