from math import hypot
class vector:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __repr__(self):
return 'vector(%r, %r)' % (self.x, self.y)
def __abs__(self):
return hypot(self.x, self.y)
def __bool__(self):
return bool(abs(self))
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return vector(x, y)
def __mul__(self, scalar):
return vector(self.x * scalar, self.y * scalar)
定義乙個向量類vector
__repr__ 實現物件的字串表達方式,也可實現__str__
__abs__ 實現模運算,呼叫方式 abs(v)
例項:
c = vector(3,4)
abs(c)
# out[4]: 5.0
c# out[5]: vector(3, 4)
str(c)
# out[6]: 'vector(3, 4)'
repr(c)
# out[7]: 'vector(3, 4)'
print('%s' % c)
# vector(3, 4)
__add__ 和 __mul__ 實現了 + 和 * 運算
c+vector(3,4)
# out[15]: vector(6, 8)
c*3# out[16]: vector(9, 12)
__bool__ 實現了 bool型別
當向量模為0時 返回false,否則返回true
bool(c)
#out[18]: true
bool(vector(0,0))
#out[19]: false
bool(vector(-3,-4))
# out[20]: true
更高效的實現:
def __bool__(self):
return bool(self.x or self.y)
省略了模運算的過程
驗證:
bool(3 or 4)
#out[21]: true
bool(-3 or 4)
#out[22]: true
bool(0 or 4)
#out[23]: true
bool(0 or 0)
#out[24]: false
Python小知識點(4)
bin 6 0b110 s bin 6 s 0b110 type s 例如,為了把標準庫time中的函式sleep的功能遮蔽 mock 我們可以在程式初始化時呼叫 time.sleep lambda x none。這樣,在後續 中呼叫time庫的sleep函式將不會執行原有的功能。例如,執行time...
python小知識 Python小知識
1 python是一種解釋性語言,當程式執行時,一行一行的解釋,並執行 優點 除錯 很方便,開發效率高,並且可以跨平台 不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。缺點 執行速度慢。python的種類 cpython ipython pypy jython ironpython ...
python小知識 python小知識
一 列表 l 1,2 m l l和m同時指向列表物件,內容為 1,2 l l 3,4 系統新增了乙個物件,內容為 1,2,3,4 l,m 1,2,3,4 1,2 l 1,2 m l l 3,4 對列表在原處做修改 l,m 1,2,3,4 1,2,3,4 二 python程式設計中的中文編碼問題 問題...