內建函式---特定算術的運算__add__、__radd__、__iadd__等
阿新 • • 發佈:2018-12-22
內建函式
-
構造和析構
__init__ 、 __del__
-
屬性操作
__getattr_ _setattr__ _delattr__
-
支援字典操作
__getitem_ _setitem__ _delitem__
-
像函式一樣
__call__
- 列印輸出
__str __
- 物件的字串表示
### __str__ 列印輸出
class Person:
def __init__(self,name,age):
self. name = name
self.age = age
#print/str都會觸發該方法
def __str__(self):
print('*****8')
return "姓名:{},年齡:{}".format(self.name,self.age)
#通常用來返回物件的字串表示形式
#呼叫repr方法時自動觸發
def __repr__(self):
return 'Person("{}",{})'.format(self.name,self.age)
p = Person( 'xiaoming',20)
# print(p)
# s = str(p)
# print(p)
r = repr(p)
print(r,type(r))## <class 'str'>
#執行有效的PYthon字串
r2 = eval(r)
print(r2,type(r2))#<class '__main__.Person'>
- 特定算術運算子重
class Num:
def __init__(self,math):
self.math = math
def __str__(self):
return str(self.math)
## 物件出現在 + 號的左邊
def __add__(self, other):
return self.math +other
## 物件出現在 + 號的右邊
def __radd__(self, other):
return self.math +other
#+=運算時自動觸發,若沒有用add
def __iadd__(self, other):
return Num(self.math + other)
n = Num(12)
# ret = n +10
# ret = 10 + n
n += 50
print(n)
-
自行測試
加法:__add__ __radd__ __iadd__ 減法:__sub__ __rsub__ __isub__ 乘法:__mul__ __rmul__ __imul__ 除法:__truediv__ __rtruediv__ __itruediv__ 求餘:__mod__ __rmod__ __imod__
-
關係運算
class Num: def __init__(self,a): self.a = a ##大於 def __gt__(self, other): return self.a > other #小於 def __lt__(self, other): return self.a < other #等於 , == 會觸發,不實現__ne__,!=也會觸發該方法 def __eq__(self, other): return self.a == other #大於等於 def __ge__(self, other): return self.a >= other #小於等於 def __le__(self, other): return self.a <= other #不等於: != def __ne__(self, other): return self.a != other n = Num(20) print(n > 10) print(n < 10) print(n == 10)