在電腦中任何數值都是一組位元(01序列)簡單的組成,硬體無法區分儲存器地址,指令碼,字元整型。
類使用者只看資料項的狀態和行為,故類類似於抽象資料型別。在強型別語言中,宣告某一型別變數,其實質也是例項化了某型別的變數。只不過這種該變數標識 ,是帶方法抽象的例項,需要你賦值填充內容初始化,方可發揮自己的天賦。
變數
對變數有讀寫的概念固然重要,但對變數,準確的說是識別符號
name
的第一次也非常重要。
第一次出現的類標識,第一次出現的函式標識... 都決定了標識抽象型別,後續與之相關的操作要向它出身型別靠齊
在賦值語句的左邊第一次使用一個名稱時,就會產生一個Python變數。
賦值語句提供了一種將名稱與值關聯起來的方法。該變數將持有對一塊資料的引用而不是資料本身。
class A:
def __init__(self):
print('....A....')
a = A()
a.__init__()
A.__init__('ss')
def A():
print('......func....')
A()
a ='abc...str'
a = a+123
這很容易理解python變數為什麼可以允許不同型別,它只個引用。迴歸本質,編譯器在讀到你寫的變數值時,會斷言出是何種型別的型別,然後進行該型別關聯的方法操作。這也是為什麼有時候,你在做字串變數+數字拼接時,需要顯式地將數字強轉為字串。
資料
資料本身只是一堆符號化的字元,它的意義在於語義化,在於對它的操作。與現實中事務相似,同型別資料通常具有相同的行為特徵。物件導向的程式設計,通常定義一個類來描述資料的外觀(狀態)和資料能做什麼(行為)。
資料與資料間的關係,謂之為資料結構。既然存在關係,肯定有對關係的增刪改查,這些操作比之於類,則是方法。
型別
型別是程式語言的靈魂,它向電腦解釋瞭如何對待位元。
型別總某種意義上來說,它是對資料關係操作的抽象。型別會方便關係操作,它會存在一些輔助記錄關係的屬性(元資訊)。而通常意義上的初始化,是給操作集提供資料來源。
python型別系統主要分為元型別,class型別,instance型別。
若用一棵樹來類比,元類好比是根節點,class,function,list, tuple... 則是子節點,而instance則是葉子。
有些class是用來操作class的,對class進行擴充套件,訪問,修改,組合(比如繼承的實現super類),對行為的控制。
至於instance 則是程式設計中常用的物件例項,它是由通俗意義上的class生成。