1부터 시작되는 리스트(xy_list)

xylist

xy_list : 어떻게 기본 list에서 새로운 자료형을 만드나- 006

작성자
sjpark
작성일
2025-06-08 00:23
조회
38

아예 새로운 자료형을 만든다고 생각하면, 아래에 언급하는 대부분의 던더메소드들을 새롭게 정의해야 하는데, 만드는건 어떻게든 만든다 하더라도, 만들고 나서 새로운 자료형인데, 이것을
한두번 테스트하는거야 가능하겟지만
, 기본적인 자료형처럼 사용하는 것은 생ㄱ가보다 쉬운일이 아닙니다

-     다른 사람들은 이게 문제가 없을지 어떻게 믿고 사용하냐는 것이며

-     풍부한 관련 기능이 없을수 있다는 것이며

-     지속적인 관리가 되는지 의구심을 가질수 있습니다

당연히 제가 만드는 xy_list도 다른 분들은 쉽게 사용하기를 꺼려하실것입니다. 그렇지만
이것을 만든 이유중의 하나는

-     어떤 다른 새로운 자료형을 만든다고 한다면, 도움이 될것이며

-     우리가 사용하는 것은 거의대부분 0에서 시작이 되는데, 엑셀과같이 1부터시작하는 코드를 사용하는 프로그램은 가끔 01 사이에서 왔다갔다 하고는 합니다

그래서 저는 이두가지가 모드 하나에 들어가는 형태와, 조금 불편하기도 하지만, “~”을 이용하는것처럼 그냥 적용해 본것입니다. 저의 경우도 list의 형태인데, 0이 아닌 1부터 시작하는 것으로 만드는 기능을 넣고싶고 싶었습니다.

이제 기존자료형 + 추가기능을 만드는 방법에 대해서 설명을 드리는데, 자세한 내용은
xy_list모듈의 소스를 참고하시기를 바랍니다

새로운 자료형을 만드는 것을 참고려면, xy_list모듈의 소스코드를 참고하시면 되는데, 가장 먼저 알아야

할 부분이 바로 던더메소드의 역할들에 대해서 이해를 하는 것이 필요합니다. 아래의 것은 리스트에서 사용되는 중요 던더메소드에 대한 설명입니다

함수

사용법

간단한설명

__len__

len(x)

객체의 길이를 반환

__add__

x+y ==> x.__add__(y)

operator.add(x, y) x+y

__iadd__

x+= y ==> x__iadd__(y)

 

__delattr__

 

클래스에서 속성을 삭제하려고 할 때 호출

__delitem__

del self[key]

항목을 삭제할 때 실행

__eq__

x == y ==> x.__eq__(y)

등괄호

__ge__

x >= y ==> x.__ge__(y)

>=사용시 

__getattribute__

 

 

__getitem__

self[key]

키에 대한 항목을 가져 오려고 할 때 실행

__gt__

x > y ==> x.__gt__(y)

>사용시

__imul__

x *= y ==> x.__imul__(y)

*=사용시

__init__

 

인스턴스가 __new__로 생성된 후, 호출되는
메소드

__le__

x <= y ==> x.__le__(y)

 <=

__lt__

x < y ==> x.__lt__(y)

 <

__mul__

x * y ==> x.__mul__(y)

 *

__ne__

x != y ==> x.__ne__(y)

 !=

__new__

 

새로운 인스턴스를 만들 때 제일 처음으로 실행되는 메소드

__setattr__

 

 

__setitem__

self[key] = value

dictionary[key] = item

__sizeof__

 

sys.getsizeof ()를 실행할 때 호출

__str__

 

개체를 인쇄 가능한 형식으로 인쇄하려고 할 때 실행

 

위의 중요한 던더메소드중에서 , 1부터 시작되는 리스트는 어떤 형태의 값에 대해서 순서를 뜻하는 값이 사용될 때 이것을 바꾸면 되는 것입니다. , 리스트의 기본자료형은 0이므로, 입력은 1로 하면, 내부적으로 0으로 바꾸면 되는 것입니다

위의 던더메소드에서 숫자가 들어가는 메소드를 보면, 아래와같습니다

함수

사용법

간단한설명

__len__

len(x)

객체의 길이를 반환

__delitem__

del self[key]

항목을 삭제할 때 실행

__getitem__

self[key]

키에 대한 항목을 가져 오려고 할 때 실행

__setitem__

self[key] = value

dictionary[key] = item

__str__

 

개체를 인쇄 가능한 형식으로 인쇄하려고 할 때 실행

 

예를들어 aaa = [1,2,3,4,5]라고 한다면aaa[2]를 하면 3이나와야하고, aaa[“2”]를하면 2가 나와야 하는것입니다

그러면, 위의 던더메소드 중에서 __getitem__이 바로 이럴 때 사용되는 메소드입니다. 이메소드는 아래와 같은 형태로 사용이 되는 것입니다

def __getitem__(self, key=""):

 eSiCREFBQUFBQUFBQUFBQUFB4S8O4P8BNO+phRPHmqUAAAAASUVORK5CYII=

위와같이 조건으로 비교를 해서 기존의 것도 사용하고, 추가된 부분에서 원하는 코드를 작성하면 되는 것입니다