#! 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...