python中的self的用法

2021-08-21 12:37:14 字數 1475 閱讀 8880

#! usr/bin/python3.7

# -*- coding:utf-8 -*-

"""self的用法

1.自身 指的是例項本身(instance)

2.由於"自身"這個詞,都是相對而言的"其它"說的,指的是類class,和其它變數,比如區域性變數,全域性變數

此處的self,是個物件(object),是當前類的例項。

python中為什麼要有self

1.在類的**(函式)中,需要訪問當前的例項中的變數和函式的,即訪問(例項)instance中的

(1)對應的變數(屬性,property):instance.properynam,去讀取之前的值和寫入的值

(2)呼叫對應的函式(function):instance.function(),即執行對應的動作

而需要訪問例項的變數和呼叫例項的函式,當然需要對應的例項instance物件本身

而python中就規定好了,函式的第乙個引數,就必須是例項物件本身,並且,建議,把其名寫為self

"""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')

"""當程式執行時,會報錯,takes 0 positional arguments but 1 was given

這是因為這個函式不需要引數,但是函式卻被傳遞了乙個引數,可是我們呼叫sayhi()函式的時候,

並沒有寫引數。為什麼會出現這樣的引數error

這是因為"每乙個相關聯的方法呼叫都自動傳遞實參self,它是乙個指向例項本身的引用__init__中的

引數self會自動傳遞給sayhi(),而sayhi()在定義的時候沒有形參,就會報錯。

"""d.sayhi()

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

python中self的用法

self相當於是類對外提供的乙個呼叫屬性和動態方法的介面,在類的方法中加上self,則可以通過例項化後的物件呼叫,沒有的話就只能通過類本身呼叫 類名.函式名 分為兩種情況 class test01 def init self,t self.t t def testfun01 self print 這...

python中self引數的用法

類的方法與普通的函式只有乙個特別的區別 它們必須有乙個額外的第乙個引數名稱,按照慣例它的名稱是 self。class test def prt self print self print self.class t test t.prt 程式輸出如下 main test object at 0x000...

lua中self,「 」, 的用法

一.在類中,self的用法 lua程式設計中,經常遇到函式的定義和呼叫,有時候用點號呼叫,有時候用冒號呼叫,這裡簡單的說明一下原理。girl function girl.gotomarket girl somemoney girl.money girl.money somemoney endgirl...