메서드나 속성이름 앞에 _로 시작해서 비공개로 숨기기

minsing-jin·2023년 12월 1일
0

상황

def __make_corpus_passages(self, row):
	# Corpus to passages
	passage = Passage(
	id=row['_id'],
	content=row['text'],
	filepath=self.file_path,
	metadata_etc={'title': row['title']}
    )
	return passage

위의 메서드는 부모클래스인 BaseBeirEvaluator에 선언이 되어있었다. 그의 자식클래스인 BeirScifactEvaluator에서 아래 코드의 gt passage를 만드는 apply에 적용했더니

gt_passages = gt_passages.apply(self.__make_corpus_passages, axis=1).tolist()

이 메서드가 없다고 뜨는것이다.

해결

메서드나 속성 이름이 언더바 _로 시작하면 비공개 멤버로 지정한다. 때문에 이러한 메소드나 속성은 외부에서 접근할 수 없다. 같은 공간에서만 사용할 수 있는것임.
따라서 __make_corpus_passages메서드는 비공개라 찾을수 없어유~ 가 떴던것이었다.

def make_corpus_passages(self, row):
	# Corpus to passages
	passage = Passage(
	id=row['_id'],
	content=row['text'],
	filepath=self.file_path,
	metadata_etc={'title': row['title']}
    )
	return passage

메서드나 속성을 비공개로 함으로써 외부에서 이 함수안의 value들을 변질되게 하는걸 방지하는 기능으로 사용한다.

원래 make_corpus_passage를 비공개로 만들어서 변질을 불가능하게 만들려고 했었다.

profile
why not? 정신으로 맨땅에 헤딩하고 있는 코린이

0개의 댓글