[python] Q&A

spring·2020년 11월 9일

파이썬을 다루면서 궁금했던 점들을 모아놓음.

Q: Question
C: Conclusion
A: Detailed answer
R: Reference

Q. object를 상속받는 경우와 아닌 경우의 차이가 무엇인가요?

C. 무조건 class MyClass(object): 와 같은 방식으로 상속 받는걸 추천.
A. Python3 에서는 class MyClass(object):class MyClass: 는 모두 new-style 클래스로 같다. 하지만 Python2 에서는 class MyClass(object):는 new-style 클래스 이고 class MyClass: 는 old-style 클래스로 다르다. Python3만 하는경우는 전혀 상관없으나 호환성을 위해서 사용하는 걸 추천한다.
R. https://hashcode.co.kr/questions/487/object%EB%8A%94-%EC%99%9C-%EC%83%81%EC%86%8D%EB%B0%9B%EB%8A%94-%EA%B1%B4%EA%B0%80%EC%9A%94

Q. class 멤버변수 생성시 __init__ 함수에서와 클래스 내부에서의 차이?

C. __init__ 함수에서 모두 처리해라. 모든 객체에서의 값을 변경가능하게 하려면 클래스 내부, 그렇지 않으면 init. 하지만 단 한번이라도 self로 참조하게 되면 글로벌로 변경 불가. 정확히 말하면 Class내부 변수가 self에 의해 스코프가 가려진다.

A. 클래스 내부의 변수와 self.value는 서로 다른 공간이다. 접근지정자로 접근할 때 우선적으로 self에 접근하고 self가 없다면 클래스 내부 변수로 접근한다. 쉽게 말해 클래스 내부의 값을 정의하면 static 처럼 동작한다. 하지만 단 한번이라도 self에 의해 또는 객체에 의해 값이 변경된다면 self가 새로 생겨 클래스 내부의 변수에 접근할 수 없다.
R. https://stackoverflow.com/questions/1537202/difference-between-variables-inside-and-outside-of-init/

Q.PEP8을 따라야 하나요?

C. 시키는 대로 해라.
A. PyCharm 쓰면 알아서 해준다.
R. https://kongdols-room.tistory.com/18

profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

0개의 댓글