Я не совсем понимаю, на что вы имели в виду, когда вы говорите составленному список, но на самом деле вы можете иметь структуры в Python.
В идеале вы подразумеваете, что вам нужен неизменный объект типа C-Struct, вы можете создать его довольно легко. В Python его называют namedtuple
, или по крайней мере это самое близкое, с которым я столкнулся. Конечно, вы можете создать свой собственный общий объект в Python и добавить аргументы, но вместо этого это будет динамическая структура.
В идеале, в C, вы бы-структуру, как это ->
struct tag_name
{
type attribute;
type attribute2;
/* ... */
};
И вы могли бы получить доступ к атрибутам struct
как так tag_name.attribute
. Итак, вот как namedtuple
работы:
>>> from collections import namedtuple
>>> NetworkAddress = namedtuple('NetworkAddress',['hostname','port'])
>>> a = NetworkAddress('www.python.org',80)
>>> a.hostname
'www.python.org'
>>> a.port
80
>>> host, port = a
>>> len(a)
2
>>> type(a)
<class '_ _main_ _.NetworkAddress'>
>>> isinstance(a, tuple)
True
>>>
Если есть что-нибудь, что вы хотели бы в конкретном, то, пожалуйста, обновите ваш вопрос объяснить составленного список так что я могу обновить этот ответ.
Однако, это типично для статически типизированного языка, такого как C, поскольку мы используем Python, мы можем использовать некоторые классные динамические свойства, поэтому вы по существу создаете объект, который вы можете добавить в свойствах по своему усмотрению:
class DynamicObject(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
консоли сеанса
>>> class DynamicObject(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
>>> happy_obj = DynamicObject(name="Happy Gilmore")
>>> happy_obj.name
'Happy Gilmore'
Кредиты ->
https://stackoverflow.com/users/320726/6502 для динамического объектного кода. Спасибо, человек :)
Это недопустимый Python. –
@Tichodroma, следовательно, вопрос «Как я могу написать это в Python?» –
Самое близкое к C-Struct, что я могу придумать, это 'namedtuple', если вы, ребята, лучше интерпретируете, тогда прокомментируйте, чтобы я мог изменить свой ответ. –