프로그래밍
첫 페이지 회원가입 로그인
비공개 손님 2020-08-02 00:47:21
Python 희한한 현상

시스템 정보 이것저것을 걷어들이는 코드에서
문제가 생기는 부분만인데효

Systeminfo 클래스를 instantiate한 다음
getMemSizeTotal 을 호출해서 메모리 전체 사이즈를 찍으려고하는
아주아주 간단한 코드인데

bytenum < factor
이 부분이 '오브젝트랑 int를 비교할 수 없다'고 오류가 나고 있거든효
근데 아무리 봐도 잘 이해가 안되는데
이게 왜 이러는 건가효? 버그 아닌가효?




import psutil

class Systeminfo():
    def __init__ (self): pass

    def getSize(bytenum, suffix="B"):
        factor = 1024
        for unit in ["", "K", "M", "G", "T", "P"]:
            if bytenum < factor: ################## 문제의 부분
                return f"{bytenum:.2f}{unit}{suffix}"
            bytenum /= factor

    def getMemSizeTotal(self):
        mem = psutil.virtual_memory()
        print(type(mem.total)) # <class 'int'> 라고 출력됨
        print(self.getSize(mem.total)) ####### 다음 오류 발생;;;
        # 왜 갑자기 int, int 비교가 아니라 객체, int 비교라고 해석되는 것???
        # TypeError: '<' not supported between instances of 'Systeminfo' and 'int'

if __name__ == "__main__":
    thisSystem = Systeminfo()
    print(thisSystem.getMemSizeTotal())

질문 | 2490명이 읽었어요. 44.210.132.31 |

0
1 비공개 손님 2020-08-02 01:27:37
def getSize(bytenum, suffix="B"): -> def getSize(self, bytenum, suffix="B"):
요렇게 해야하는 거 아닌가요?
2 비공개 손님 2020-08-02 03:34:22
ㄳㄳ함니다 되네효;;
파이썬은 왜 self를 계속 델꼬 다니는 거져? 자의식 과잉인가
3 비공개 손님 2020-08-02 04:24:49
처음에 클래스 개념 없이 개발되었다가 클래스 개념 탑제하면서 파이썬 내부적으로 구조적 문제가 있지 않았나 추측해봅니다. (뇌피셜임)
4 비공개 손님 2020-08-02 14:02:58
걍 대충 나왔는데 나온지도 오래되고 그 이후 덕지덕지 추가된 스크립트 언어들이 대충 그렇죠 뭐 (코팜)
5 비공개 손님 2020-08-02 23:42:51
2/ python에선 멤버변수를 참조하지 않으려면 함수 위에
@staticmethod
def getSize(bytenum, suffix='B') 로 해주시면 됩니다

https://wikidocs.net/21054
이거 읽어보시면 대충 각 나올듯..
6 비공개 손님 2020-08-02 23:50:44

@는 데코레이터인데, 함수 위아래 뭔가 추가해서 비슷한 일을 하고 싶을 때 쓰고요 여튼 정적메쏘드라고 안 알려주면 ide단에서 첫번째 인자는 self여야 한다고 ㅈㄹ하는데, 쌩까고 ㄱㄱ하면 첫번째 인자를 이름만 바뀐 self로 생각해서 스샷 처럼 self.num 이나 wtf.num이나 같은 결과가 나오게 됩니다..
왜 이러냐면 애초에 시작이 oop랑 먼 언어였는데 백엔드도 지원하고 지지고 볶다보니 유사 oop가 되어버린게 아닌가 생각이 드네요
7 비공개 손님 2020-08-03 00:23:17
5 / ㄳㄳ 함 읽어봤네효

스태틱 메서드의 id 를 찍어보니까 실제로 메모리 할당을 받아놓고 있군효
댓글을 작성하실 수 없습니다.
(권한이 없는 회원레벨)
목록으로
이용약관 | 광고/제휴 | 개인정보취급방침 | 문의/신고 | 모바일 TE31 | 서버 부하 : 16.25%
실시간 Issue 커뮤니티 TE31 [알지롱] ⓒ 2002-2021
TOP arrow_upward