您好,登錄后才能下訂單哦!
本篇內容主要講解“pyhton數據挖掘self原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“pyhton數據挖掘self原理是什么”吧!
Class: 可以理解為一個組裝工廠。假如我們要生產一個機器人,那我們先要搭個工廠吧。先確定:我們要先安裝胳膊,再安裝頭,我們的小破機器人的流水線就搭好了。這個工廠比較智能,胳膊和頭的數量都可以調。
class BuildRobot(): def __init__(self,armcount,headcount): self.armcount = armcount self.headcount = headcount
所以這里的class,就是搭了一個工廠叫BuildRobot。'__init__' 就是告訴這個流水線,首先你需要這個機器人有幾個胳膊(‘armcount'),有幾個腦袋(‘headcount')。先忽略一下這里的self,以后講。
這個時候你可以run一下,這樣你的class就搭好了。可是這時的工廠,因為你沒有開始生產,是沒有任何產出的。下面就是instance
instance:可以理解為啟動一次工廠生產出的機器人。現在我們用之前搭的工廠生產一個正常一點的機器人,兩個胳膊一個腦袋:
normal_robot = BuildRobot(2,1)
查看一下胳膊數對不對?
我們再來一個 不太正常的機器人:
weird_robot = BuildRobot(4,1)
normal_robot 和weird_robot 都是instance。他們雖然胳膊數量不一樣,但是本質上都是由這個class造出來的,由胳膊和頭組成的機器人。
object: 這個就比較麻煩了,大部分情況下,object和instance的含義是一樣的,都是指這個造出來的robot。這兩者的區別,只是在英語語言環境下的區別:
normal_robot is an instance of ‘buildrobot'
normal_robot is a ‘buildrobot' object
上面這兩個說法是等價的。
兩者都由def定義,稍微粗糙一點的理解就是,在class里面的function叫method。所以,method是和class,instance有關的一種function。
舉個栗子:
還是上面的工廠,我們現在加裝一個車間,負責把胳膊上色:
class BuildRobot(): def __init__(self,armcount,headcount): self.armcount = armcount self.headcount = headcount def paintarm(self,color): print("paint arm:",color)
這個paintarm,就是一個method。還是一樣,現在這個class沒有生產,因此這個method也沒有任何實際的產品出來。我們只能先生產出一個instance來:
colorful_robot = BuildRobot(2,1)
好的我們現在有一個兩個胳膊一個頭的robot了。這時,我們的robot還是沒有上色的,因為我們沒有讓這個instance進入上色的那個車間。現在我們讓這個robot進入車間,涂個紅色。
colorful_robot.paintarm('red')
paint arm: red
上面的過程,就是call這個paintarm method。幾個點:
如果沒有先造一個機器人,這個車間就沒有辦法給胳膊上色,因此要上色,就必須先造一個機器人出來。所以,method是依賴于instance的。
這個車間只能給這個工廠產出的robot的胳膊上色,你從別的工廠拿一個車過來讓他上色,他是不干的。因此,method是依賴于class的。只有這個class創建的instance,才能call這個method。
假如我把上色這個活,外包了。我就在外面另建了個工廠,專門上色,這就是function:
def outsourcing_paint(robot,color): print("paint",robot,"arm:",color) outsourcing_paint(colorful_robot,'red')
paint <__main__.BuildRobot object at 0x116b434a8> arm: red
這個外包的上色工廠,不管你這個東西是從哪個工廠來的,無論你是個機器人還是機器狗,反正我就拿來,給胳膊上色。
看到這里,應該就明白function和method的區別了。
注意method其實有兩種,一種是instance method,一種是class method。
instance method就相當于對于機器人這個產品進行各種修改的車間。我給機器人上色,不影響我這個工廠的外形對吧?
class method,是對這個工廠,這個class的屬性進行修改的車間,比如我有一個車間負責把工廠涂成紅色的。這個行為并不影響我造出來的機器人的大小顏色屬性。
本篇的討論,我們先限定在instance method里。
把class, method講明白以后,終于能講self了。通過上面的例子,我們注意到
outsourcing_paint(colorful_robot,'red')
在function里面,是沒有self的。因為我們告訴了外包工廠,給誰上色。所以在定義外包工廠function時,我們有兩個input variables:robot 和 color。
colorful_robot.paintarm('red')
然鵝在使用method的時候,我們只告訴了車間,我要紅色。那這個車間怎么知道,給哪個機器人上色啊?是給normal robot還是給colorful robot?因為我們在call這個method的時候,使用了colorful_robot.paintarm()這個格式,于是paintarm這個method就知道,哦,我要給這個colorful_robot上色。
在python里,要想使instance.method()這個格式可以正常工作,在class里面編寫method的時候,就必須把變量的第一個位子留出來,用來指代未來call這個method的instance。就相當于我們在搭建給胳膊上色的這個車間的時候,就必須預留一個入口來放入已經生產出來的機器人。
留出來的這個位子,可以叫任何名字。只不過為了代碼的優美,大部分人選擇使用self,來指代使用這個method的instance他自己。
到此,相信大家對“pyhton數據挖掘self原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。