Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 28, 2009 14:53:56

sinopteek
От:
Зарегистрирован: 2009-09-28
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

методы get и set внутри класса

Переписываю программ с C# на python.
дошёл до функций внутри класса, которые имеют на С# следующий вид

 unsafe class ATMega16
{
..............
public byte DDRA
{
set
{
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,
RQ_IO_WRITE, value, aDDRA, null, 0, 5000);
}
get
{
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
RQ_IO_READ, 0, aDDRA, buffer, 1, 5000);

return buffer[0];
}
}
.............
}
Требуется получить на выходе следующую конструкцию(на C# работатет):
dev = ATMega16()
dev.DDRA |= 0x01
как я понимаю необходимо переопределить функции __set__ и __get__ внутри создаваемого класса,
к сожалению не могу вменяемой информации по этому поводу

Пока получается что-то подобное:
class ATMega16():
class DDRA:
reqbuffer = [0]*4
def __set__(self):
self.handle.controlMsg( USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,RQ_IO_WRITE, 0, value, aDDRA,100)

def __get__(self):
return self.handle.controlMsg(USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,CUSTOM_IO_READ,0,value,aDDRA,0,timeout)
функции usb_control_msg и controlMsg на C# и python'е отличаются из-за реализации библиотек(если у кого возникнуит вопросы)



Офлайн

#2 Сен. 28, 2009 17:01:25

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

методы get и set внутри класса

Свойства только для чтения:

class Foo(object):
_x = None

@property
def x(self):
return self._x
Cвойства для чтения и записи:

class Foo(object):

_x = None

def getX(self):
return self._x

def setX(self, value):
self._x = value

x = property(getX, setX)
Вот как-то так.



Офлайн

#3 Сен. 28, 2009 18:52:36

sinopteek
От:
Зарегистрирован: 2009-09-28
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

методы get и set внутри класса

regall
Вот как-то так.
Спасибо, получилось =)
странно но в pydcos локально нет информации о property(), поэтому пара ссылок по теме, если вдруг кому понадобится:
http://docs.python.org/library/functions.html - поиском property
http://snippets.dzone.com/posts/show/954



Отредактировано (Сен. 28, 2009 18:59:58)

Офлайн

#4 Сен. 28, 2009 20:20:47

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

методы get и set внутри класса

sinopteek
странно но в pydcos локально нет информации о property(),
Странно, что вы не нашли (ниже ссылка - быстрый поиск в пидоках по слову property =) ):
http://docs.python.org/search.html?q=property&check_keywords=yes&area=default



Офлайн

#5 Сен. 28, 2009 20:39:59

sinopteek
От:
Зарегистрирован: 2009-09-28
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

методы get и set внутри класса

regall
sinopteek
странно но в pydcos локально нет информации о property(),
Странно, что вы не нашли (ниже ссылка - быстрый поиск в пидоках по слову property =) ):
http://docs.python.org/search.html?q=property&check_keywords=yes&area=default
У меня python версии 2.5.4(в основном из-за нескольких библиотек и совместимости) и в нём нет документации по property(по крайней мере локально),
Сам удивляюсь. На сайте - документация есть, но от более новой версии, что несколько странно



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version