Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2007 06:25:24

Imnotgoga
От:
Зарегистрирован: 2007-02-21
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Структура с различными типами

Как в Python получить подобную структуру:
MyType = packed record
Date: TDateTime;
Time: TTime;
Data: Double;
All: Byte;
S: String;
end;



Офлайн

#2 Март 5, 2007 06:52:05

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Структура с различными типами

либо через класс

import datetime
class MyType:
    DateTime = datetime.datetime.now()
    Data = 0.0
    All = 0
    S = ''
    def __init__(self, DateTime, Data, All, S):
        self.DateTime = DateTime
        self.Data = Data
        self.All = All
        self.S = S[:5]
myt1= MyType(datetime.datetime.now(), 15.6, 178, '1234567890')

или через словари
import datetime
d= dict(DateTime = datetime.datetime.now(), Data = 15.6, All = 178, S = '1234567890')
print d



Офлайн

#3 Март 5, 2007 09:48:46

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Структура с различными типами

Немного не по теме, но я спрошу. Разве вот это нужно:

pythonwin
class MyType:
DateTime = datetime.datetime.now()
Data = 0.0
All = 0
S = ''
? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?



Офлайн

#4 Март 5, 2007 09:58:07

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Структура с различными типами

Daevaorn
Немного не по теме, но я спрошу. Разве вот это нужно:
pythonwin
class MyType:
DateTime = datetime.datetime.now()
Data = 0.0
All = 0
S = ''
? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).



Офлайн

#5 Март 5, 2007 10:02:33

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Структура с различными типами

lorien
4.3 struct – Interpret strings as packed binary data

This module performs conversions between Python values and C structs represented as Python strings. It uses format strings (explained below) as compact descriptions of the lay-out of the C structs and the intended conversion to/from Python values. This can be used in handling binary data stored in files or from network connections, among other sources.
Этот модуль удобен для упаковки/распаковки данных при сериализации или обмене с си-кодом.
Но не удобен для постоянной работы.



Офлайн

#6 Март 5, 2007 10:17:49

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Структура с различными типами

Daevaorn
? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?
я сначало написал пример где были только параметры в init , потом прикинул что тому кто пишет на паскале проще для понимания код второго класса
bialix
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).
можно пример?



Офлайн

#7 Март 5, 2007 10:46:44

masai
От:
Зарегистрирован: 2007-02-14
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Структура с различными типами

Лучше всего использовать словарь. Он наиболее близок к традтиционным структурам, к тому же является встроенным типом, что, имхо, должно положительно сказаться на скорости по сравнению с реализацией через класс. Да и объявлений никаких делать не нужно будет.



Офлайн

#8 Март 5, 2007 10:56:36

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Структура с различными типами

pythonwin
bialix
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).
можно пример?
>>> class Foo(object):
… immutable = ('one', ‘two’)
… mutable =

>>> bar = Foo()
>>> buz = Foo()
>>> bar.mutable.append('three')
>>> buz.mutable



Офлайн

#9 Март 5, 2007 11:11:42

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Структура с различными типами

bialix
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).
спасибо, я так и думал
pythonwin
можно пример?
я немного изменю примерj2a'а:
>>> class Foo:
...     bar = [ 1, 2 ]
...
>>> foo = Foo()
>>> foo.bar.append( 3 )
>>> Foo.bar
[1, 2, 3]
>>> foo2 = Foo()
>>> foo2.bar
[1, 2, 3]



Офлайн

#10 Март 5, 2007 11:47:24

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

Структура с различными типами

j2a, Daevaorn, спасибо



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version