1. 程式人生 > >Python中的__name__和類

Python中的__name__和類

經常會在程式碼的最下面看到if __name__ == '__main__':,現在就來介 紹一下它的作用.

        模組是物件,並且所有的模組都有一個內建屬性 __name__。一個模組的 __name__ 的值取決於您如何應用模組。如果 import 一個模組,那麼模組__name__ 的值通常為模組檔名,不帶路徑或者副檔名。但是您也可以像一個標準的程式樣直接執行模組,在這 種情況下, __name__ 的值將是一個特別預設"__main__"。

在cmd 中直接執行.py檔案,則__name__的值是'__main__';

而在import 一個.py檔案後,__name__的值就不是'__main__'了;

從而用if __name__ == '__main__'來判斷是否是在直接執行該.py檔案

  1. #Test.py
  2. class Test:  
  3.     def __init(self):pass
  4.     def f(self):print'Hello, World!'
  5. if __name__ == '__main__':  
  6.     Test().f()  
  7. #End
  8. 你在cmd中輸入:  
  9. C:>Python Test.py  
  10. Hello, World!  
  11. 說明:"__name__ == '__main__'"是成立的  
  1. 你再在cmd中輸入:  
  2. C:>python  
  3. >>>import
     Test  
  4. >>>Test.__name__                #Test模組的__name__
  5. 'Test'
  6. >>>__name__                       #當前程式的__name__
  7. '__main__'
  8. 無論怎樣,Test.py中的"__name__ == '__main__'"都不會成立的!  
  9. 所以,下一行程式碼永遠不會執行到!  

2. Python中的類   
class <類名>:
     <語句>
      類例項化後,可以使用其屬性,實際上,建立一個類之後,可以通過類名訪問其屬性。如果直接使用類名修改其屬性,那麼將直接影響到已經例項化的物件

類的私有屬性:
  __private_attrs  兩個下劃線開頭,宣告該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs
類的方法:
  在類地內部,使用def關鍵字可以為類定義一個方法,與一般函式定義不同,類方法必須包含引數self,且為第一個引數
私有的類方法:
  __private_method 兩個下劃線開頭,宣告該方法為私有方法,不能在類地外部呼叫。在類的內部呼叫slef.__private_methods
類的專有方法:
__init__  建構函式,在生成物件時呼叫
__del__   解構函式,釋放物件時使用
__repr__ 列印,轉換
__setitem__按照索引賦值
__getitem__按照索引獲取值
__len__獲得長度
__cmp__比較運算
__call__函式呼叫

__add__加運算
__sub__減運算
__mul__乘運算
__div__除運算
__mod__求餘運算
__pow__稱方
繼承類定義:

相關推薦

Python__name__

經常會在程式碼的最下面看到if __name__ == '__main__':,現在就來介 紹一下它的作用.         模組是物件,並且所有的模組都有一個內建屬性 __name__。一個模組的 __name__ 的值取決於您如何應用模組。如果 import 一個模組,那麼模組__name__ 的值通

PythonList字符串型的相互轉換

相互轉換 join world 字符串類型 類型 引號 style spa 字符串類 1.字符串轉換成List a = ‘Hello World!‘ a_list = list(a) //[‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘ ‘, ‘W‘, ‘o‘, ‘

5分鐘搞懂Python例項方法,方法靜態方法

1. 例項方法: 由例項物件呼叫且至少有一個self引數; 執行例項方法時,自動將呼叫該方法的物件賦值給self. 2.類方法: 由類物件呼叫且至少有一個cls引數; 執行類方法時,自動將呼叫該方法的類賦值給cls. 3.靜態方法: 由類呼叫, 沒有預設引數. class Foo(object

Pythonsort()sorted()的區別

-s 可變對象 傳遞 內置函數 ict pan 16px nbsp lin 1、sort()是可變對象(字典)的方法,無參數,無返回值, sort()會改變可變對象,因此無需返回值。例如: list: 1 >>> a = [4,3,7,8] 2 >

Pythonrangexrange的異同之處

基本上 xrange class 依據 對象 lis tar 都是 post range 函數說明:range([start,] stop[, step])。依據start與stop指定的範圍以及step設定的步長,生成一個序列。 range演示樣例: &

大話Python*args**kargs的使用

print rgs 使用 logs python spa key bsp value 對於初學者來說,看到*args和**kargs就頭大,到底它們有何用處,怎麽使用?這篇文章將為你揭開可變參數的神秘面紗 1.*args 實質就是將函數傳入的參數,存儲在元組類型的變量ar

pythonxrangerange(轉)

log item .py 對象 nbsp net range all file 說到序列,我們第一想到的是一組有序元素組成的集合。同時,每個元素都有唯一的下標作為索引。 在Python中,有許多內界的序列。包括元組tuple,列表list,字符串str等。上面提到的序列

python編碼解碼decodeencode的使用

python encode decode python 在處理字符串時經常遇到編碼錯誤,導致亂碼,且python 2.x和 python 3.x之間有很大的不同,先在這裏記錄一下,以後整理;轉載 文章一篇:http://www.cnblogs.com/evening/archive/2012/04

Pythonmapreduce函數

courier ref tail erl position 必須 第一個 http title ①從參數方面來講: map()函數: map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參

Python*args **kwargs的用法

ase 再次 使用 clas **kwargs sdn 知識庫 base *args 好久沒有學習Python了,應為工作的需要,再次拾起python,喚起記憶。 當函數的參數不確定時,可以使用*args 和**kwargs,*args 沒有key值,**kwargs有ke

Pythonosshutil模塊實用方法集錦

重命名 信息 env putenv six ner 文件夾 rem move # os 模塊os.sep 可以取代操作系統特定的路徑分隔符。windows下為 ‘\\‘os.name 字符串指示你正在使用的平臺。比如對於Windows,它是‘nt‘,而對於Linux/Uni

亂碼問題引申 python stringunicode

-c 錯誤方法 odin 版本 需要 content 2.7 encode 我們 HtmlTestRunner的亂碼問題 1生成的報告中,對print打印的數據都記錄下來,但是數據有些會存在亂碼。如下面。有些又沒有亂碼。 這到底是怎麽回事呢?

pythonreturnprint的區別

bsp 不同 urn text 一是 什麽 cnblogs style c99 之前遇到這個問題,就試著對比幾種不同的結果,總結啦一下return和print的區別。 總結: return的作用之一是返回計算的值print的作用是輸出數據到控制端在第一個結果中什麽都沒

python的元(metaclass)

優先 裝飾器 target {} pass get tac 搜索 items 認識python中元類的準備工作。 1,首先需要明白一個概念就是python中一切皆為對象。 input: class Trick(object): pass print type(‘1234

Python的基本型簡介

rip 作用 集合 成了 叠代 如果 增加 下劃線 等號 1、變量 變量不僅可以是數字,還可以是任意數據類型 命名規範:變量是用一個變量名表示,變量名必須是大小寫英文、數字和下劃線_的組合,且不能用數字開頭 python中等號“=”是賦值語句,可以把任意數據類型賦值給變量

Python生成器叠代器的功能介紹

family line 介紹 mil auto 叠代器 常用 方法 lean 生成器和叠代器的功能介紹 1. 生成器(generator) 1. 賦值生成器 1. 創建 方法:x = (varia

Python IteratorIterable的區別

pytho 數據 執行 next 判斷 -h 實現 col http (轉載:http://blog.csdn.net/passionkk/article/details/49929887) Python中 list,truple,str,dict這些都可以被叠代,但他們並

python對象

python對象和類#coding:utf-8 #1、對象是一個有著相應行為的數據的集合 #2、在面向對象建模中,用於各種描述對象的屬於叫做類 #3、類和對象的區別:類描述了對象,是創建對象的模板 #4、關聯是把兩個類聯系起來最基本的方式 #5、一個類可以通過關系中其他端的任何一個對象關聯在一起,這個類的對

python%r%s的區別

ould mat mark post inf info repr pan formatter %r用rper()方法處理對象 %s用str()方法處理對象 有些情況下,兩者處理的結果是一樣的,比如說處理int型對象。 例一: print "I am %d years o

Python@property@classmethod@staticmethod

return 被調用 命令 成了 aps display init 命名空間 類的方法 前戲 首先,先要弄清楚一個類裏面的,各個組成部分都應該怎麽稱呼。   - 註:可能叫法會不太一樣。     關於@property 顧名思義:它的意思為‘屬性’。