• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

파이썬 문법 관련 질문

20.02.10 21:12 작성 조회수 85

0

 항상 유익한 강의 감사합니다.

scrapy로 gmarket 크롤링 하기1 강의에서
items.py파일 안에 EcommerceItem 클래스 안에 title 변수에 값을 넣는 부분이 이해가 잘 되지 않아 질문드립니다.

코드를 보면
for title in tltles:
    item = EcommerceItem()
    item['title'] = title
    yield item

이 부분에서 앞전에 강의 하셨던 내용에서 클래스 안의 변수에 값을 넣을 때 .을 붙여서 넣는다고 하셨는데 그 방법과 어떤 차이가 있는지 궁금합니다.

가령 item.title = title 이 코드하고의 차이점이 궁금합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 좋은 강의라고 말씀해주셔서 정말 감사합니다.

이 부분은 객체지향 문법과 관련이 있어서, 상세한 설명이 필요합니다.

객체지향에서 연산자 오버로딩(Operator Overloading) 기법이 있는데요. 간단하게 말씀드리면, +, -, 와 같은 연산자를 썼을 경우, 해당 동작을 재정의 하는 기법입니다. 다음 블로그에서도 간략히 언급되어 있는 부분이긴 합니다.

https://www.fun-coding.org/PL&OOP1-9.html

해당 클래스는 EcommerceItem 클래스에서 상속받는 scrapy.Item 클래스에서, item에 있는 각 필드값을 읽을 때, item['필드명'] 과 같이 써야만 접근할 수 있도록 해놓았습니다. 그래서  item['title'] 와 같이 작성하도록 하였습니다.

만약 해당 부분은 item.title 로 쓴다면, 다음과 같이 에러가 날 것입니다. 감사합니다.

    103     def __getattr__(self, name):
    104         if name in self.fields:
--> 105             raise AttributeError("Use item[%r] to get field value" % name)
    106         raise AttributeError(name)