7월, 2019의 게시물 표시

2019.7.30 헷갈리는 Python의 attribute. (getattr, __getattr__, __getattribute__)

1. getattr(arg) : 객체로부터 arg attribute를 가져오는 함수이다. class Count(object): def __init__(self, mymin, mymax): self.mymin = mymin self.mymax = mymax self.current = None getattr(a, 'mymin') # 10 getattr(a, 'mymax') # 20 getattr(a, 'no attribute') # error raised 2. __getattr__(): 객체의 attribute를 호출했을 때 그 attribute가 존재하지 않는다면 실행되는 함수이다. class Count(object): def __init__(self, mymin, mymax): self.mymin = mymin self.mymax = mymax self.current = None def __getattr__(self, fallback): print("In __getattr__", fallback) a = Count(10, 20) a.mymin # 10 a.mymax # 20 a.noattribute # In __getattr__noattribute 3. __getattribute__ : 객체의 attribute를 조회할 때 조회하는 로직이 실행 되기 전에 실행되는 함수이다. 즉, get을 할 때 항상 도는 코드라고 볼 수 있다. 만약 __getattr__ 과 __getattribute__가 같이 구현되어 있을 때 없는 attribute를 조회한다면 __getattr__의 우선순위가 높다.

2019.07.30 Git reset

여기서 –hard 옵션을 사용하지 않으면 변경내역이 있는 파일들은 working directory에 modified 상태로 유지 Soft : 워킹 디렉토리와 index는 그대로 두고 브랜치만 전으로 되돌린다.(파일들은 그대로 남아있다는 뜻) Mixed : 워킹 디렉토리는 그대로 두지만 인덱스를 포함해서 브랜치까지 전으로 되돌린다.(git commit과 git add명령까지 되돌린다는 뜻) Hard : 실제 데이터까지 지워버릴 수 있어 위험하지만 워킹 디렉토리까지 이전으로 되돌릴 수 있다.(복구는 불가능하지만 되돌리고 다음 commit이 남아있다면 reflog로 복원 가능) 출처 : https://dydtjr1128.github.io/git/2019/07/28/Git-Reset.html git hard reset을 하니 파일이 없어져서 당황했었는데, 완전히 파일들을 날릴 게 아니면 soft와 mixed를 적절히 활용해야한다. add된 상태로 되돌리고 싶으면 soft, file add까지 뺀 상태로 되돌리고 싶으면 mixed. hard는 갑자기 삘받아서 엄청 휘갈겨썼는데 파일들을 지우고 싶거나 할 때 쓰면 될듯. git reset --option(soft, hard, mixed) COMMIT ID

2019.07.25 python String을 다룰 때 String 앞에 자꾸 backslash 가 앞에 붙는 문제

웹에서 POST로 받는 데이터 포맷이 'data': 'payload' 방식인데 내 payload는 double-quoted로 되어있었다. 따라서 payload 부분에 single-quote를 추가로 더해주었더니 자꾸만 앞에 backslash가 붙어서 서버에서 데이터를 파싱할 때 문제를 일으켰다. 이것저것 찾아보니... 결국 서버에서 데이터를 받을 때 굳이 single-quote를 안 붙여줘도 자동으로 single-quote로 만들더라ㅠㅠ 그래서 single-quote를 억지로 앞에 붙이니 '어 이 친구는 스트링 마크가 아니라 진짜 필요한 single-quote이구나' 하면서 계속해서 앞에 backslash를 붙인듯 하다. 결론 : single-quote로 wrapped 된 데이터가 필요할 때 자꾸 backslash가 문제를 일으키면 그냥 single-quote를 빼고 데이터를 전송해보자 ㄹㅇ 별거 아닌것 때문에 몇시간을.. ㅂㄷㅂㄷ;;;