1. 程式人生 > >類的基本概念及self是什麽東西?

類的基本概念及self是什麽東西?

fun 數據 ret 任務 相同 urn 包含 容器 屬性



#coding=utf-8
"""
class 類 #對一類擁有相同屬性的對象的抽象、藍圖、原型,在類中定義了這些對象都具備的屬性、共同方法
object對象 一個對象就是一個類的實例化模型,一個類必須經過實例化後才能在程序中調用,一個類可以實例化多個對象
類的三大特性:
1、封裝
在類中對數據賦值。內部調用對外部用戶是透明的、裏面包含著類的數據和方法、類似一個膠囊或者容器
2、繼承
一個類可以派生出子類,在這個父類中定義的方法屬性可以被子類繼承
3、多態
例:老板讓所有員工開始工作,老板只需要說開始工作,而不需要對各類員工下達任務、類似財務部、行政部、技術部等、
即一個接口,多種實現。
編程的兩大原則:
1、寫重復代碼是非常不好的低級行為
2、寫的代碼需要經常變更
類的構造函數的初始化過程
首先一般函數的執行流程是:
def funtion(x):
    x += 1
    return x
value = funtion(x)
調用過程是funtion函數運行之後返回一個值這個值會存到一個內存裏面,他的變量名(門牌號)是value
當寫好一個類模型後,這個類會存到一個內存中,先記為:內存1 內存1中包含的東西,初始化函數,初始化屬性,方法
在初始化類的實例的時候
即ri = role(name) 會在內存中開辟第二個內存空間,記為:內存2,裏面會存這個實例化的具體值,即r1的name.等屬性
即實例化的過程是為r1 = role.__init__(name),返回一個內存,事實上在類的實例化過程中內存2還會把r1存進去,即門牌號所以說實例化時候實際上需要這些參數
r1 = role(r1,name)
那麽既然多了一個參數,所有__init__函數裏面就需要加一個參數,即role.__init__(r1,name),內存2裏面存的屬性為ri.name 等
再說類方法,類方法放到哪一個內存裏面都不會改變方法裏面的東西,所以沒必要在內存2裏面也存進去方法,所以初始化的時候並沒有把類方法也存到實例的內存裏面,
那麽當實例需要調用這個方法時候,實際上就是r1.funtion1,而funtion沒在r1的內存裏面啊,所以必須要調用role.funtion,那麽調用role的funtion就必須要告訴funtion是哪個對象使用的我了
所以就是這樣調用的r1.funtion()=role.funtion1(r1),所以類的方法裏面就必需加一個參數了即funtion(self)這個self有什麽用比如
def funtion1(r1):
    print r1.name
如果沒有r1,那麽你怎麽得到r1.name呢?
而這個r1就是我們類裏面的self的由來

""" class Role(): def __init__(self,name): #構造函數,在實例化時做一些初始化工作 self.name = name def funtion1(self): print self.name r1 = Role("zq") print id(r1) print id(r1.name) print id(Role)

類的基本概念及self是什麽東西?