說起python過載,大家學過其他的語言比如說C#語言的話,應該知道有方法過載和運算子過載的概念,但是python過載的話,有它自己的特殊性,下面我說說自己的一點看法,希望大家踴躍拍磚。
python 的過載主要包括方法過載和運算子過載。
1.python 方法過載: 其他的語言一般對於方法過載的話,主要是根據引數的型別不同或者是數量不同來區分同名的方法。而python則比較特殊,它本身是動態語言,方法的引數是沒有型別的,當呼叫傳值的時候才確定引數的型別,故對引數型別不同的方法無需考慮過載。對引數數量不同的方法,則(大多數情況下)可以採用引數預設值來實現。
比如你可以定義函式的預設值:
def info(x,y,z=1):
pass
2.python 運算子過載: 在C#中,我們透過使用關鍵字operator定義一個運算子方法,並定義與所在類相關的運算子行為。在 Python中,運算子過載的方式更為簡單——每一個類都預設內建了所有可能的運算子方法,只要重寫這個方法,就可以實現針對該運算子的過載。例如以下是過載加法操作:
class Info(object):
def __init__(self):
self.a = 11
self.b = 22
def __add__(self,x):
return self.a * self.b
a = Info()
b = Info()
print a + b
上面的例子是重寫了+運算子號,你也可以過載其他的運算子。比如你可以過載乘號運算子,感興趣的話,可以自己寫寫程式碼。
百度搜索圈T社群(www.aiquanti.com) 免費影片教程
說起python過載,大家學過其他的語言比如說C#語言的話,應該知道有方法過載和運算子過載的概念,但是python過載的話,有它自己的特殊性,下面我說說自己的一點看法,希望大家踴躍拍磚。
python 的過載主要包括方法過載和運算子過載。
1.python 方法過載: 其他的語言一般對於方法過載的話,主要是根據引數的型別不同或者是數量不同來區分同名的方法。而python則比較特殊,它本身是動態語言,方法的引數是沒有型別的,當呼叫傳值的時候才確定引數的型別,故對引數型別不同的方法無需考慮過載。對引數數量不同的方法,則(大多數情況下)可以採用引數預設值來實現。
比如你可以定義函式的預設值:
def info(x,y,z=1):
pass
2.python 運算子過載: 在C#中,我們透過使用關鍵字operator定義一個運算子方法,並定義與所在類相關的運算子行為。在 Python中,運算子過載的方式更為簡單——每一個類都預設內建了所有可能的運算子方法,只要重寫這個方法,就可以實現針對該運算子的過載。例如以下是過載加法操作:
class Info(object):
def __init__(self):
self.a = 11
self.b = 22
def __add__(self,x):
return self.a * self.b
a = Info()
b = Info()
print a + b
上面的例子是重寫了+運算子號,你也可以過載其他的運算子。比如你可以過載乘號運算子,感興趣的話,可以自己寫寫程式碼。
百度搜索圈T社群(www.aiquanti.com) 免費影片教程