[python] спрятанные члены класса
От: neFormal Россия  
Дата: 30.09.09 14:30
Оценка:
столкнулся с такой интересностью в django:
class UserInfo(models.Model):
    birthday = models.DateField('birthday date')


вроде обычный класс.. наследуется от кого то, содержит какой то мембер..
но dir(UserInfo) этот мембер не показывает, появляется он только у экземпляра класса после инстанцирования..

как можно получить такое поведение?.
в джанге производятся какие то игры с метаклассами (собственно, у models.Model есть __metaclass__), но в этом я пока не разобрался.. может коллективный разум подскажет?.
...coding for chaos...
Re: [python] спрятанные члены класса
От: Daevaorn Россия  
Дата: 30.09.09 14:34
Оценка: 4 (1)
Здравствуйте, neFormal, Вы писали:

F>столкнулся с такой интересностью в django:

F>
F>class UserInfo(models.Model):
F>    birthday = models.DateField('birthday date')
F>


F>вроде обычный класс.. наследуется от кого то, содержит какой то мембер..

F>но dir(UserInfo) этот мембер не показывает, появляется он только у экземпляра класса после инстанцирования..

F>как можно получить такое поведение?.

F>в джанге производятся какие то игры с метаклассами (собственно, у models.Model есть __metaclass__), но в этом я пока не разобрался.. может коллективный разум подскажет?.


Да, метакласс вынимает поля из неймспейса класса и складывает их в специальное место (_meta.fields). Чтобы добиться такого поведения, ммм... надо написать похожий метакласс.
Re[2]: [python] спрятанные члены класса
От: neFormal Россия  
Дата: 30.09.09 14:46
Оценка:
Здравствуйте, Daevaorn, Вы писали:

D>Да, метакласс вынимает поля из неймспейса класса и складывает их в специальное место (_meta.fields).


да, всё верно.. я только не нашёл _meta.fieds.. только _meta.virtual_fields
спасибо, стало понятнее..
...coding for chaos...
Re: [python] спрятанные члены класса
От: Курилка Россия http://kirya.narod.ru/
Дата: 30.09.09 15:22
Оценка:
Здравствуйте, neFormal, Вы писали:

F>в джанге производятся какие то игры с метаклассами (собственно, у models.Model есть __metaclass__), но в этом я пока не разобрался.. может коллективный разум подскажет?.


Рекомендую книжку Pro Django — там подобные вещи рассмотрены (ну и вообще книжка практически без "воды")
Re[2]: [python] спрятанные члены класса
От: neFormal Россия  
Дата: 30.09.09 18:27
Оценка:
Здравствуйте, Курилка, Вы писали:

F>>в джанге производятся какие то игры с метаклассами (собственно, у models.Model есть __metaclass__), но в этом я пока не разобрался.. может коллективный разум подскажет?.

К>Рекомендую книжку Pro Django — там подобные вещи рассмотрены (ну и вообще книжка практически без "воды")

да, мне уже советовали.. посмотрю..
...coding for chaos...
Re[2]: [python] спрятанные члены класса
От: alexeiz  
Дата: 30.09.09 20:20
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Рекомендую книжку Pro Django...


Понятно, что книжка про джанго, но какое у неё название?
Re[3]: [python] спрятанные члены класса
От: Курилка Россия http://kirya.narod.ru/
Дата: 30.09.09 20:22
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, Курилка, Вы писали:


К>>Рекомендую книжку Pro Django...


A>Понятно, что книжка про джанго, но какое у неё название?


Pro Django
P.S. Если это был намёк на иронию, то имхо довольно плоский.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.