|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Aleksey Barabanov 2:5020/400 06 Jun 2000 13:36:05 To : All Subject : Re: динамическое наследование -------------------------------------------------------------------------------- Paul Kulchenko wrote: > > >Так вот, HЕ РАБОТАЕТ. Два экземпляра класса Персона разного наследования > А я уже письмо писать начал по поводу того, что не должно работать-то. Hу я же так торопился поправочку внести ;) > >не живут одновременно. Или один или другой. Переменная @ISA имеет > >слишком глобальный характер. Поэтому добавляется вопрос. А это > Переменная @ISA является переменной КЛАССА, а не объекта, со всеми > вытекающими проблемами (для тебя в данном случае). Это я прочувствовал и проверил. Т.е. перл не поддерживает привязанной к экземпляру таблицы ссылок. А динамический резолвинг через список @ISA зависит от его содержимого. Если я его меняю, то соответственно меняется наследование у всех существующих в данный момент экземпляров. Эту фичу тоже можно как-нибудь пристегнуть, но не предумал пока зачем. > >как-нибудь лечится, кроме как методами генной инженерии ? > Поскольку для тебя наследование тут совершенно не важно (если ты не > собираешься применять методы девочек к мальчикам или преобразовывать один в > другой) то забудь про наследование и возвращай из конструктора Персоны > ОБЪЕКТ Мальчик или Девочка в зависимости от твоих условий. Проблем с вызовом Т.е. после анализа параметров просто молча создавать или Мальчика или Девочку и возвращать его ссылку. А где будет искаться при очередном вызове метод Пить? Мне ведь нужно что-бы он наследовался. > правильных методов при этом не будет. Код будет примерно тот же, что и > сейчас, удали только все, что касается @ISA. Должно помочь, если только Спасибо. Hо мне нужна не помощь, а подсказка. У меня собственно все работает, разбитое на два класса. Я уже в первом письме оговаривался, что работа с двумя классами совершенно идентична, кроме первого вызова конструктора. > потом тебе не понадобится Ребенок, образованный двумя разнополыми Персонами. > Что касается других вариантов, я бы сделал Человека, который может Пить, > Курить и пр., а от него уже образовал бы Мальчика и Девочку. Так ведь тут наоборот. Как бы есть много сущностей, но все для меня имеют один интерфейс ( не передергивать , имеется ввиду только Пить, Курить, Гулять ;). И внешне это должно выглядеть одинаково. С точки зрения ООП не вижу проблем. Вопрос в том, а что таки есть предел у Perl ? -- Aleksey Barabanov <alekseybb@mtu-net.ru> --- ifmail v.2.15dev5 * Origin: Small Office (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/441335dbc155.html, оценка из 5, голосов 10
|