이상적으로 당신은 개체와 같은 불변의 C-Struct를 원한다는 것을 의미합니다. 매우 쉽게 만들 수 있습니다. 파이썬에서는 namedtuple
이라 불리는데, 적어도 이것이 내가 만났던 가장 가까운 것이다. 물론 파이썬에서 자신의 제네릭 객체를 만들고 인자를 추가 할 수는 있지만 대신 동적 인 구조체가 될 것입니다.
이상적으로는, C에서,이 같은 구조체 것 ->
struct tag_name
{
type attribute;
type attribute2;
/* ... */
};
을 그리고 당신이 그렇게 tag_name.attribute
처럼 struct
의 속성에 액세스 할 수 있습니다. 특정에하고 싶은 것이 있다면
>>> 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
>>>
, 그때 나는이 대답을 업데이트 할 수 있도록 구성 목록을 설명하기 위해 질문을 업데이트하십시오 : 그래서, 이것은 namedtuple
작품 방법이다.
그러나 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'
크레딧 ->
,536, https://stackoverflow.com/users/320726/6502 동적 객체 코드입니다. 고마워요.
이것은 유효한 Python이 아닙니다. –
@Tichodroma 따라서 "어떻게 파이썬에서 작성할 수 있습니까?" –
내가 생각할 수있는 C-Struct에 가장 가까운 것은 여러분이 더 나은 해석을하면'namedtuple'입니다. 그러면 제 대답을 바꿀 수 있도록 의견을 말하십시오. –