사소한 TIL:

Python에서a + b를 실행하면 a.__add__(b)를 먼저 시도하고, NotImplemented를 반환하면 b.__radd__(a)를 시도한다.

단, Python 2.2 이상에선 b가 a의 서브클래스이면 순서가 뒤집혀서 b.__radd__(a)를 먼저 호출한다.
이 규칙이 없으면 A.__add__가 먼저 동작해서, 서브클래스가 오른쪽에 있을 때 override를 못하기 때문이다. (cpython 코드)

단, 서브클래스가 __radd__를 직접 정의하지 않고 상속만 한 경우에는 뒤집지 않는다.

class A:
    def __add__(self, other):
        return "A.__add__"

class B(A):
    def __radd__(self, other):
        return "B.__radd__"

A() + B()  # B.__radd__ — 서브클래스의 radd가 먼저 호출됨
2

❤️

2 people reacted.

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은: @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「@hongminhee洪 民憙 (Hong Minhee) :nonbinary:」に。

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중