Форум сайта python.su
Как в Python получить подобную структуру:
MyType = packed record
Date: TDateTime;
Time: TTime;
Data: Double;
All: Byte;
S: String;
end;
Офлайн
либо через класс
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
Офлайн
Немного не по теме, но я спрошу. Разве вот это нужно:
pythonwin? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?
class MyType:
DateTime = datetime.datetime.now()
Data = 0.0
All = 0
S = ''
Офлайн
Daevaornдействительно, так лучше не писать.
Немного не по теме, но я спрошу. Разве вот это нужно:pythonwin? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?
class MyType:
DateTime = datetime.datetime.now()
Data = 0.0
All = 0
S = ''
Офлайн
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.
Офлайн
Daevaornя сначало написал пример где были только параметры в init , потом прикинул что тому кто пишет на паскале проще для понимания код второго класса
? Т.е. зачем так писать, если потом в __init__ всё инициализиуется и так?
bialixможно пример?
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).
Офлайн
Лучше всего использовать словарь. Он наиболее близок к традтиционным структурам, к тому же является встроенным типом, что, имхо, должно положительно сказаться на скорости по сравнению с реализацией через класс. Да и объявлений никаких делать не нужно будет.
Офлайн
pythonwin>>> class Foo(object):bialixможно пример?
действительно, так лучше не писать.
Объявление атрибутов на уровне класса автоматически делает их общими для всех экземпляров такого класса.
И потом можно легко наступить на грабли, если какие-то переменные позволяют модифицировать их значения inplace
(например списки, наборы и словари).
Офлайн
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]
Офлайн
j2a, Daevaorn, спасибо
Офлайн