_init_()
所有類的超類object,有乙個預設包含pass的init()實現,這個函式會在物件初始化的時候呼叫,我們可以選擇實現,也可以選擇不實現,一般建議是實現的,不實現物件屬性就不會被初始化,雖然我們仍然可以對其進行賦值,但是它已經成了隱式的了,程式設計時顯示遠比隱式的更好。
class employee:
'所有員工的基類'
empcount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
employee.empcount += 1
def displaycount(self):
print "total employee %d" % employee.empcount
def displayemployee(self):
print "name : ", self.name, ", salary: ", self.salary
_str_()
class cat:
... def __init__(self,age,***):
... self.age = age
... self.*** = ***
... def __str__(self):
... return "年齡是:%s , 性別是:%d" % (self.age, self.***)
x = cat(34,'human')
print(x)
年齡是:34 , 性別是:human
總結幾點:
1、在python彙總方法名如果是***()格式的,就代表著這個方法名具有特殊的功能,也稱為「魔法」方法;
2、當使用「print()」方法的時候,一旦定義了str(self)方法,那麼就會讓該類例項物件被print呼叫時返回類的特定資訊,即return方法後的語句。
_call_()
將例項變成函式可呼叫的物件。
class person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print 'my name is %s...' % self.name
print 'my friend is %s...' % friend
>>> p = person('bob', 'male')
>>> p('tim')
my name is bob...
my friend is tim...
python name == 『main』詳細解釋
一.語**釋
1.__name__
name 是python的內建屬性,是系統全域性變數!每乙個py檔案都有乙個屬於自己的name:
如果py檔案作為模組被匯入(import),那麼name就是該py檔案的檔名(也稱 模組名);
如果py檔案直接執行時(ctrl+shift+f10),那麼name預設等於字串」main」;
舉個簡單的例子:假如你名字是張三,在朋友眼中,你是張三(__name__ == '張三');在你自己眼中,你是你自己(__name__ == '__main__')
就是有這種操作
2.」__main__」
「_ main _」 實際上就是乙個字串,用來鑑別程式入口,沒有太多花裡胡哨的東西.
3.name == 「main」
當.py檔案被直接執行時, if name == 「main」 之下的**塊將被執行,該語句就相當與python的main主函式入口,示例**如下:
a.新建乙個 my_name.py 檔案,作為模組檔案:
# 定義乙個函式並列印 __name__
def prit_name():
print("my_name.py __name__:", __name__)
if __name__ == "__main__":
prit_name()
b.新建乙個 python_main.py 檔案,作為啟動檔案 (ctrl+shift+f10):
# 匯入 my_name 模組
import my_name
# 定義乙個函式並列印 __name__
def prit_name():
my_name.prit_name()
print("python_main.py __name__:", __name__)
if __name__ == "__main__":
prit_name()
輸出結果:
my_name.py __name__: my_name
python_main.py __name__: __main__
由此可見,作為啟動檔案 python_main.py ,該檔案的內建屬性 name 等於 「main」,而my_name.py 作為匯入模組,該模組的 name 等於檔名(也稱模組名字),所以my_name.py 中的 表示式 if name == 「main」 並不成立!
當直接將my_name.py作為啟動檔案時,輸出:
my_name.py __name__: __main__
如果py檔案作為模組被匯入(import),那麼name就是該py檔案的檔名(也稱 模組名);
如果py檔案直接執行時,那麼name預設等於字串」main」;
廢話多二.作用
1.name == 「main」 作為啟動py檔案的main函式入口
2.乙個專案中必然會包含多個模組檔案,每個模組檔案在自己寫完**之後會做一些簡單的測試用於檢測bug 或者 對自己的函式呼叫寫乙個簡單的示例,而恰到好處的是:name == 「main」 既不會影響你的測試**,也不會影響別人呼叫你的介面函式。
python的魔法函式
所以還是老老實實的把自己的基本功練好,物件導向玩的爐火純青,其他的不過是稍加訓練,跟賣藝的學幾招也能稱霸一片天。哈哈 牛吹的太過了,還是回到正題,總結分享一下一些稍微不太熟悉的魔法方法。一 str 它表示的是直接列印物件實現的方法,str 是被print函式呼叫的,一般都是返回乙個值,這個值是以字串...
python的魔法函式
所以還是老老實實的把自己的基本功練好,物件導向玩的爐火純青,其他的不過是稍加訓練,跟賣藝的學幾招也能稱霸一片天。哈哈 牛吹的太過了,還是回到正題,總結分享一下一些稍微不太熟悉的魔法方法。一 str 它表示的是直接列印物件實現的方法,str 是被print函式呼叫的,一般都是返回乙個值,這個值是以字串...
python魔法函式
python中魔法函式簡單上來說就是在構建某個類的時候,給類定義一些初始的方法,來實現類物件的某些屬性或者方法而準備。其形式如下,下雙劃線開頭雙劃線結尾 初始化乙個學生class class student def init self,students list self.students list...