파이썬에서 C에 struct를 쓰려면 이런 방법밖에 없나요?


발생하는 문제 및 실행환경

파이썬에서 C에 struct를 쓰려면 이런 방법밖에 없나요?

소스코드

class MyStruct():
    def __init__(self, field1, field2, field3):
        self.field1 = field1
        self.field2 = field2
        self.field3 = field3

원래 C를 쓰다가(C도 조금 배웠지만...) 이제 막 파이썬을 배우고 있습니다. 다른 사람들 코드는 다 짧고 쉽던데 왜 저는 파이썬도 C처럼 짜고 있는걸까요..?

  • 2016년 02월 11일에 작성됨

조회수 729


1 답변


좋아요
0
싫어요
채택취소하기

C++이 아닌 C의 struct라고 하셨으니(멤버 함수가 없음) collections.namedtuple을 쓰면 될 것 같습니다.

C로 설명하자면, collections.namedtuple(typename, field_names, verbose=False, rename=False)에 인자에

  1. typename : struct 이름
  2. 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")

같이 멤버 변수를 설정하면 됩니다

  • 2016년 02월 11일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close