[Python] не работают проперти в embedded классе
От: IROV..  
Дата: 18.03.10 10:30
Оценка: -1
class Class(Engine.Entity):
    def __init__(self):
        pass
    def setX(self, :
        print "set"
        self.x = 0
    def getX(self):
        return self.x
    X = property(getX, set


class_object.X = 1


не работает, какие могут быть причины?
понятно что дело в Engine.Entity но
я не волшебник, я только учусь!
Re: [Python] не работают проперти в embedded классе
От: Temoto  
Дата: 18.03.10 10:41
Оценка: :)
Здравствуйте, IROV.., Вы писали:

IRO>
IRO>class Class(Engine.Entity):
IRO>    def __init__(self):
IRO>        pass
IRO>    def setX(self, :
IRO>        print "set"
IRO>        self.x = 0
IRO>    def getX(self):
IRO>        return self.x
IRO>    X = property(getX, set


IRO>class_object.X = 1
IRO>


IRO>не работает, какие могут быть причины?


Ну class_object это неизвестное имя, а в декларации класса буквально синтаксические ошибки, например, незакрытая скобка def setX(self, :

"не работает" это уровень пользователя. Вы программист или где? Какую конкретно ошибку или неожиданное поведение вы наблюдаете?

IRO>понятно что дело в Engine.Entity но
Re[2]: [Python] не работают проперти в embedded классе
От: IROV..  
Дата: 18.03.10 11:06
Оценка: -1
Здравствуйте, Temoto, Вы писали:

Ну да опечатки при копирования это самое оно. Ок, приношу извенения, не углядел.
class_object = Class() — или у программиста могут быть другие варианты? — будем разжовывать.

T>"не работает" это уровень пользователя. Вы программист или где? Какую конкретно ошибку или неожиданное поведение вы наблюдаете?

не вызывается функция set. вместо этого у данного обьекта создается поле X ему присваевается значение.
я не волшебник, я только учусь!
Re[3]: [Python] не работают проперти в embedded классе
От: Temoto  
Дата: 18.03.10 11:21
Оценка: +1
IRO>Ну да опечатки при копирования это самое оно. Ок, приношу извенения, не углядел.
IRO>class_object = Class() — или у программиста могут быть другие варианты? — будем разжовывать.

Могут, я уже говорил, если не написать class_object = Class(), то "оно тоже не работает". Откуда кому-то кроме вас может быть известно что там *на самом деле написано*?

T>>"не работает" это уровень пользователя. Вы программист или где? Какую конкретно ошибку или неожиданное поведение вы наблюдаете?

IRO>не вызывается функция set. вместо этого у данного обьекта создается поле X ему присваевается значение.

>>> class Class(object):
...   def setX(self, value):
...     print "set"
...     self.X = 0
...   def getX(self):
...     return self.X
...   x = property(getX, setX)
... 
>>> class_object = Class()
>>> class_object.x = 20
set


Значит, либо вы чего-то недоскопировали (скорее всего), либо, действительно проблема в родительском классе — давайте его код. Но это очень вряд ли, потому в вашем куске нет кода, который вызывает что-то у родителя, единственный вариант тогда остаётся, что Engine.Entity имеет какой-то хитрый метакласс, который играет с полями. В любом случае нужен код Engine.Entity, чтобы сказать наверняка.
Re: [Python] не работают проперти в embedded классе
От: slava_phirsov Россия  
Дата: 18.03.10 12:32
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>
IRO>class Class(Engine.Entity):
IRO>    def __init__(self):
IRO>        pass
IRO>    def setX(self, :
IRO>        print "set"
IRO>        self.x = 0
IRO>    def getX(self):
IRO>        return self.x
IRO>    X = property(getX, set


IRO>class_object.X = 1
IRO>


IRO>не работает, какие могут быть причины?

IRO>понятно что дело в Engine.Entity но

Попробуй модифицировать конструктор вот так:

    def __init__(self):
        self.x = 0
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re: [Python] не работают проперти в embedded классе
От: slava_phirsov Россия  
Дата: 18.03.10 12:34
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>
IRO>class Class(Engine.Entity):
IRO>    def __init__(self):
IRO>        pass
IRO>    def setX(self, :
IRO>        print "set"
IRO>        self.x = 0
IRO>    def getX(self):
IRO>        return self.x
IRO>    X = property(getX, set


IRO>class_object.X = 1
IRO>


IRO>не работает, какие могут быть причины?

IRO>понятно что дело в Engine.Entity но


Да, вызвать в __init__ конструктор базового класса тоже не помешает...
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re: [Python] не работают проперти в embedded классе
От: FR  
Дата: 18.03.10 13:06
Оценка: 1 (1) +1
Здравствуйте, IROV.., Вы писали:

IRO>не работает, какие могут быть причины?

IRO>понятно что дело в Engine.Entity но

Класс должен быть нового типа то есть прямо или косвенно наследоваться от object.
Re[2]: [Python] не работают проперти в embedded классе
От: IROV..  
Дата: 18.03.10 18:00
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, IROV.., Вы писали:


IRO>>не работает, какие могут быть причины?

IRO>>понятно что дело в Engine.Entity но

FR>Класс должен быть нового типа то есть прямо или косвенно наследоваться от object.


На самом деле, не обязательно.

Причину я нашел, embedding класса Entity был с перегружеными set и get и там забыли прописать PyObject_GenericSetAttr и PyObject_GenericGetAttr.

Всем спасибо!
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.