python 類中的self


今天工作中寫python代碼,在def函數定義的時候總要寫一個self參數,不明白何意思…百度了一下這個self代表的是類的實例,不是類,所以學習一下相關知識。


 

下面這個Sms類中的函數是用post請求獲取數據,獲取的數據是json格式,取json中的body

在send函數中我們就定義了變量self,但其實在函數內部並沒有用到它

import requests
import json

class Sms():
    def send(self, url, body):
         request = requests.post(url, json=body)
         return request.json()

在調用的時候也需要寫這個self:

def signature(self):
  request = self.interf.send(self.yam.read('url')) # 這里的read是另一個函數

 

那么明確self的用處:

1)self只有在類的方法中才會有,獨立的函數或方法是不必帶有self的。

2)self在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。

3)self名稱不是必須的,在python中self不是關鍵詞,定義成a或b或其他名字都可以,只是約定俗成我們定義成了self。

4)self指的是類實例對象本身,不是類本身。

  例1:

class Person:
    def __init__(self, name):
        self.name=name
    def sayhello(self):
        print('My name is:', self.name)
p = Person('Bill')
print(p)

  結果:

<__main__.Person object at 0x000002744FEA8208>  

  上述例子中,self指向【Person】的實例【p】

此外:

5)self在定義的時候需要定義,但是在調用的時候會自動傳入

6)self總是指調用時的類的實例

  例2:

class Parent:
    def pprt(self):
        print(self)


class Child(Parent):
    def cprt(self):
        print(self)

c = Child()
c.cprt()
c.pprt()
p = Parent()
p.pprt()

  結果:

<__main__.Child object at 0x000001FC9E7B8BE0>
<__main__.Child object at 0x000001FC9E7B8BE0>
<__main__.Parent object at 0x000001FC9E7B8C50>

  上述例子中,在繼承時,傳入的是哪個實例,self就是那個傳入的實例,而不是指定義了self類的實例.

 


暫時了解了這么多,然后關於類和類的實例,還不是很懂(之前學的python白學了…),所以后續還需要再學習面向對象這一方面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM