{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "***\n", "# 20. 클래스와 연산자 중복 정의\n", "***\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 1 연산자 중복 (Operator Overloading)\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1-1 수치 연산자 중복\n", "- 직접 정의하는 클래스 인스턴스에 연산자를 적용하기 위하여 미리 약속되어 있는 메소드들을 정의" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
메소드(Method) | \n",
"연산자(Operator) | \n",
"인스턴스 o에 대한 사용 예 | \n",
"
\\_\\_add\\_\\_(self, B) | \n",
"+ (이항) | \n",
"o + B, o += B | \n",
"
\\_\\_sub\\_\\_(self, B) | \n",
"- (이항) | \n",
"o - B, o -= B | \n",
"
\\_\\_mul\\_\\_(self, B) | \n",
"\\* | \n",
"o \\* B, o \\*= B | \n",
"
\\_\\_div\\_\\_(self, B) | \n",
"/ | \n",
"o / B, o /= B | \n",
"
\\_\\_floordiv\\_\\_(self, B) | \n",
"// | \n",
"o // B, o //= B | \n",
"
\\_\\_mod\\_\\_(self, B) | \n",
"% | \n",
"o % B, o %= B | \n",
"
\\_\\_divmod\\_\\_(self, B) | \n",
"divmod() | \n",
"divmod(o, B) | \n",
"
\\_\\_pow\\_\\_(self, B) | \n",
"pow(), \\*\\* | \n",
"pow(o, B), o \\*\\* B | \n",
"
\\_\\_lshift\\_\\_(self, B) | \n",
"<< | \n",
"o << B, o <<= B | \n",
"
\\_\\_rshift\\_\\_(self, B) | \n",
">> | \n",
"o >> B, o >>= B | \n",
"
\\_\\_and\\_\\_(self, B) | \n",
"& | \n",
"o & B, o &= B | \n",
"
\\_\\_xor\\_\\_(self, B) | \n",
"^ | \n",
"o ^ B, o ^= B | \n",
"
\\_\\_or\\_\\_(self, B) | \n",
"| | \n",
"o | B, o |= B | \n",
"
\\_\\_neg\\_\\_(self) | \n",
"- (단항) | \n",
"-A | \n",
"
\\_\\_abs\\_\\_(self) | \n",
"abs() | \n",
"abs(o) | \n",
"
\\_\\_pos\\_\\_(self) | \n",
"+ (단항) | \n",
"+o | \n",
"
\\_\\_invert\\_\\_(self) | \n",
"~ | \n",
"~o | \n",
"
참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 0 }