KalelPark's LAB

[CLEAN CODE] __str__ 과 __repr__의 차이 본문

Python/CLEAN CODE

[CLEAN CODE] __str__ 과 __repr__의 차이

kalelpark 2023. 3. 28. 10:27

 

Python에서의 일반적으로 자주 활용되는 메소드(Magic Method)인 __str__ 메서드와 __repr__ 메서드의 차이

두 메소드 간에는 미묘한 차이가 있습니다. 따라서 차이점을 명확하게 아는게 좋습니다.

공통점

      - 두 메소드는 모두 "객체를 문자열로 반환"한다는 공통점이 존재

 

아래의 코드를 활용해보면 __repr__ 와 __str__이 겹친다는 것을 알 수 있습니다. 

import torch
import torch.nn as nn


class model(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear1 = nn.Linear(10, 100)
        self.linear2 = nn.Linear(100, 100)
        self.linear3 = nn.Linear(100, 10)
    
    def forward(self, x):
        x = self.linear1(x)
        x = self.linear2(x)
        x = self.linear3(x)

        return x

    def __str__(self):
        return (f"Hello fused")

    def __repr__(self):
        return (f"Hello word")
    
    # def __str__(self):
    #     return (f"Hello fused")

temper = model()
print(temper.eval())

차이점

      - __str__ 사용자의 interface에 초점이 되어 있으며, __repr__의 경우 개발자에 초점을 두었습니다.

결론 : 둘 중 하나 아무거나 쓸 것 같다..

Comments