描述符 -
特性 -
方法 -
__slots__
-
__del__
-
抽象基類 -
元類 -
在類中實現特殊方法的話,自定義物件就可以使用python的內建方法。如定義了__add__()
,例項就能使用加法。
特殊方法主要有以下。
>>>
print dir(1)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']
example
__str__
方法建立具有良好輸出格式的字串,使用print時會主動呼叫這個方法。
python所有內建數字都擁有real,imag
屬性。
#!/usr/bin/python
# -*- coding: utf-8 -*-
class
complex
(object):
def__init__
(self,real = 0,imag = 0):
self.real = float(real)
self.imag = float(imag)
def__sub__
(self,other):
'''減'''
if issubclass(type(other),complex) or float(other):
return complex(self.real - other.real,self.imag - other.imag)
raise exception('type error')
def__add__
(self,other):
'''加'''
if issubclass(type(other),complex) or float(other):
return complex(self.real + other.real,self.imag + other.imag)
raise exception('type error')
def__div__
(self,other):
'''除'''
if (issubclass(type(other),complex) or float(other)) and other.real != 0
and other.imag != 0:
return complex(self.real / other.real,self.imag / other.imag)
raise exception('type error')
def__mul__
(self,other):
'''乘'''
if issubclass(type(other),complex) or float(other):
return complex(self.real * other.real,self.imag * other.imag)
raise exception('type error')
def__str__
(self):
return
'complex real = %s,imag = %s'%(self.real,self.imag)
if __name__ == '__main__':
a = complex(1,2)
b = complex(2,3)
print a
print b
print a+b #等價於a.__add__(b)...
print a.__add__(b)
print a-b
print a*b
print a/b
b = 10
print a+b
print a-b
print a*b
#print a/b #除數為0
#b + a #等價於b.__add__(a),typeerror: unsupported operand type(s) for +: 'int' and 'complex'
C 6 3 null 條件運算子
c 6 新增特性目錄 1 namespace csharp626 78internal class program919 20 21 在我們使用乙個物件的屬性的時候,有時候第一步需要做的事情是先判斷這個物件本身是不是bull,不然的話你可能會得到乙個 system.nullreferenceexce...
(運算子) 運算子
運算子既可作為一元運算子也可作為二元運算子。備註 unsafe context data guid 00bf87717d88a9fac1afadb796c675da 一元 運算子返回運算元的位址 要求 unsafe 上下文 bool data guid 9efd189df2cfb88799dca08...
c 運算子重及其呼叫
本文參考自 運算子過載就是賦予運算子新功能,其本質是乙個函式。運算子過載時要遵循以下規則 1.除了類屬關係運算子 成員指標運算子 作用域運算子 sizeof運算子和三目運算子 以外,其他運算子都可以過載。2.過載運算子限制在c 語言中已有的運算子範圍內的允許過載的運算子之中,不能建立新的運算子 3....