特性:繫結給誰就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入
《精髓在於自動傳值》
繫結方法分為兩類:
1.1 繫結給物件方法
在類內部定義的函式(沒有被任何裝飾器修飾的),預設就是繫結給物件用的
1.2 繫結給類的方法:
在類內部定義的函式如果被裝飾器@classmethod裝飾,
那麼則是繫結給類的,應該由類來呼叫,類來呼叫就自動將類當作第乙個引數自動傳入
類中定義的函式如果被裝飾器@staticmethod裝飾,那麼該函式就變成非繫結方法
既不與類繫結,又不與物件繫結,意味著類與物件都可以來呼叫
但是無論誰來呼叫,都沒有任何自動傳值的效果,就是乙個普通函式
如果函式體**需要用外部傳入的類,則應該將該函式定義成繫結給類的方法
如果函式體**需要用外部傳入的物件,則應該將該函式定義成繫結給物件的方法
如果函式體**既不需要外部傳入的類也不需要外部傳入的物件,則應該將該函式定義成非繫結方法/普通函式
ip='settings192.168.1.1
'port=3305
importsettings
import
uuid
class
mysql:
def__init__
(self,ip,port):
self.uid=self.create_uid()
self.ip=ip
self.port=port
deftell_info(self):
print('
%s:%s
' %(self.ip,self.port))
@classmethod
deffrom_conf(cls):
return
cls(settings.ip, settings.port)
@staticmethod
deffunc(x,y):
print('
不與任何人繫結')
@staticmethod
defcreate_uid():
return
uuid.uuid1()
#預設的例項化方式:類名(..)
obj=mysql('
10.10.0.9
',3307)
#一種新的例項化方式:從配置檔案中讀取配置完成例項化
#obj1=mysql.from_conf()
#obj1.tell_info()
#obj.func(1,2)
#mysql.func(3,4)
#print(obj.func)
#print(mysql.func)
print(obj.uid)
封裝,繫結方法與非繫結方法
一 封裝 1,什麼是封裝 封 屬性對外是隱藏的,但對內是開放的 裝 申請乙個命名空間,往裡面填入一系列名字 屬性 2,為什麼要封裝?封裝資料屬性的目的 首先定義屬性的目的就是為了給類外部的使用的,隱藏之後是為了不讓外部直接使用,需要類內部開闢乙個介面。然後讓類外部的使用通過介面來間接地操作隱藏的屬性...
9 繫結方法與非繫結方法
非繫結方法 繫結方法 1.繫結給類的方法 classmethod classmethod是乙個裝飾器,起作用就是宣告下面的函式是繫結給類的,可用 類.函式名 來進行呼叫即繫結到類。類在使用時會將類本身當做引數傳給類方法的第乙個引數 即便是物件來呼叫也會將類當作第乙個引數傳入 python為我們內建了...
繫結方法與非繫結方法,反射,內建方法
類中定義函式分為了兩大類 1.繫結方法 特殊之處 繫結給誰就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入 繫結給物件的方法 在類中定義函式沒有被任何裝飾器的情況下,預設就是繫結物件的 繫結給類的方法 為類中定義函式新增乙個裝飾器class method,就是繫結類的 2.非繫結方法 特殊之...