溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python里的self怎么用

發(fā)布時間:2020-10-10 17:35:57 來源:億速云 閱讀:245 作者:小新 欄目:編程語言

小編給大家分享一下python里的self怎么用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

self的用法

1.自身  指的是實例本身(Instance)

2.由于"自身"這個詞,都是相對而言的"其它"說的,指的是類class,和其它變量,比如局部變量,全局變量

此處的self,是個對象(Object),是當(dāng)前類的實例。

Python中為什么要有self

在類的代碼(函數(shù))中,需要訪問當(dāng)前的實例中的變量和函數(shù)的,即訪問(實例)Instance中的

對應(yīng)的變量(屬性,property):Instance.ProperyNam,去讀取之前的值和寫入的值

(2)調(diào)用對應(yīng)的函數(shù)(function):Instance.function(),即執(zhí)行對應(yīng)的動作

而需要訪問實例的變量和調(diào)用實例的函數(shù),當(dāng)然需要對應(yīng)的實例Instance對象本身

而Python中就規(guī)定好了,函數(shù)的第一個參數(shù),就必須是實例對象本身,并且,建議,把其名寫為self

#! usr/bin/python3.7
# -*- coding:utf-8 -*-
"""
class Person(object):
    def __init__(self, name, lang, website):
        self.name = name
        self.lang = lang
        self.website = website
        print('self', self)
        print('type of self', type(self))

class Dog(object):
    def __init__(self, name, dog_type):
        self.name = name
        self.dog_type = dog_type
#   def sayhi():
#   print("hello I am dog, my name is ",self.name)
    def sayhi(self):
        print("hello ,I am dog, my name is ",self.name)

if __name__ == '__main__':
    p = Person('xiaoliang', 'hanyu', 'www.mutual-helper.com')
    d = Dog('Caty', 'Firce')
    """當(dāng)程序運(yùn)行時,會報錯,takes 0 positional arguments but 1 was given
       這是因為這個函數(shù)不需要參數(shù),但是函數(shù)卻被傳遞了一個參數(shù),可是我們調(diào)用sayhi()函數(shù)的時候,
       并沒有寫參數(shù)。為什么會出現(xiàn)這樣的參數(shù)Error
        這是因為"每一個相關(guān)聯(lián)的方法調(diào)用都自動傳遞實參self,它是一個指向?qū)嵗旧淼囊胈_init__中的
        參數(shù)self會自動傳遞給sayhi(),而sayhi()在定義的時候沒有形參,就會報錯。
    """
    d.sayhi()

#   d.sayhi(self),也會報錯

看完了這篇文章,相信你對python里的self怎么用有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI