繫結方法與非繫結方法

2022-09-20 03:06:10 字數 1424 閱讀 5420

特性:繫結給誰就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入

《精髓在於自動傳值》

繫結方法分為兩類:

1.1 繫結給物件方法

在類內部定義的函式(沒有被任何裝飾器修飾的),預設就是繫結給物件用的

1.2 繫結給類的方法:

在類內部定義的函式如果被裝飾器@classmethod裝飾,

那麼則是繫結給類的,應該由類來呼叫,類來呼叫就自動將類當作第乙個引數自動傳入

類中定義的函式如果被裝飾器@staticmethod裝飾,那麼該函式就變成非繫結方法

既不與類繫結,又不與物件繫結,意味著類與物件都可以來呼叫

但是無論誰來呼叫,都沒有任何自動傳值的效果,就是乙個普通函式

如果函式體**需要用外部傳入的類,則應該將該函式定義成繫結給類的方法

如果函式體**需要用外部傳入的物件,則應該將該函式定義成繫結給物件的方法

如果函式體**既不需要外部傳入的類也不需要外部傳入的物件,則應該將該函式定義成非繫結方法/普通函式

ip='

192.168.1.1

'port=3305

settings

import

settings

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.非繫結方法 特殊之...