파이썬에서 C에 struct를 쓰려면 이런 방법밖에 없나요?
조회수 12458회
발생하는 문제 및 실행환경
파이썬에서 C에 struct를 쓰려면 이런 방법밖에 없나요?
소스코드
class MyStruct():
def __init__(self, field1, field2, field3):
self.field1 = field1
self.field2 = field2
self.field3 = field3
원래 C를 쓰다가(C도 조금 배웠지만...) 이제 막 파이썬을 배우고 있습니다. 다른 사람들 코드는 다 짧고 쉽던데 왜 저는 파이썬도 C처럼 짜고 있는걸까요..?
1 답변
-
C++이 아닌 C의 struct라고 하셨으니(멤버 함수가 없음) collections.namedtuple을 쓰면 될 것 같습니다.
C로 설명하자면, collections.namedtuple(typename, field_names, verbose=False, rename=False)에 인자에
typename
: struct 이름field_names
: 멤버변수 이름
정도로 생각하시면 됩니다.
예를 들면 C코드
struct MyStruct{ int field1, field2, field3; //임의로 int형으로 설정했습니다 }
는 다음 파이썬 코드
from collections import namedtuple MyStruct = namedtuple("MyStruct", "field1 field2 field3")
와 비슷한 기능이고,
실제로 쓸 때는
m = MyStruct("foo", "bar", "baz") m = MyStruct(field1 = "foo", field2 = "bar", field3 = "baz")
같이 멤버 변수를 설정하면 됩니다
댓글 입력