總目錄:
python - 子目錄:
在類基礎中簡單說過self的用法和含義。這裡我們細說一下。
首先定義乙個類
class dog(object):因為類有模板的作用,因此,可以在建立例項的時候,把我們認為必須繫結的屬性強制填寫進去。這裡就用到python當中的乙個內建方法__init__方法,例如在dog類時,把name、age等屬性綁上去:pass
dog = dog()
class dog(object):這裡注意:def __init__(self, name, age):
self.name = name
self.age = age
1、__init__方法的第一引數永遠是self,表示建立的類例項本身,因此,在__init__方法內部,就可以把各種屬性繫結到self,因為self就指向建立的例項本身
2、有了__init__方法,在建立例項的時候,就不能傳入空的引數了,必須傳入與__init__方法匹配的引數,但self不需要傳,python直譯器會自己把例項變數傳進去
class dog(object):這裡self就是指類例項本身,self.name就是dog例項物件,是該dog例項物件獨有的。而name是外部傳來的引數,不是dog類所自帶的。故,self.name = name的意思就是把外部傳來的引數name的值賦值給dog例項物件自己的屬性變數self.name。def __init__(self, name, age):
self.name = name
self.age = age
dog =dog('哈士奇',2)
print(dog.name)
print(dog.age)
哈士奇
2
例2:
class dog:self是指當前被呼叫的物件,對的,就是上邊剛被你例項化的物件p。當你需要呼叫當前物件(例項物件)的方法或者屬性時,要用self. 來進行呼叫。def __init__(self,name,type = none,call = '汪'):
self.name = name
self.type = type
self.call = call
def calls(self,second):
self.call = self.pay*second
return self.call
p = dog("旺財","中華田園犬")
print(p.calls(3))
汪汪汪
例3:
class dog:self引數:當例項物件dd去呼叫setdog方法的時候,它傳入的第乙個引數就是dd,那麼self.x = "哈士奇",self.y = "中華田園犬"也就相當於dd.x = "哈士奇",dd.y = "中華田園犬",所以你在例項物件,甚至類物件中都看不到x和y,因為這兩個屬性是只屬於例項物件dd的。def setdog(self,x,y):
self.x = x
self.y = y
def printdog(self):
print("我喜歡什麼狗:"+self.x +"和"+self.y)
dd = dog()
dd.setxy("哈士奇","中華田園犬")
例4:
class testclass(object):這裡val1 = 100
def __init__(self):
self.val2 = 200
def fcn(self, val=400):
val3 = 300
self.val4 = val
self.val5 = 500
if __name__ == '__main__':
inst = testclass()
print(testclass.val1)
print(inst.val1)
print(inst.val2)
#print(inst.val3)
#val3為區域性變數,無法在函式為呼叫'testclass' object has no attribute 'val3'
#print(inst.val4)
#print(inst.val5)
val1是類變數,可以由類名直接呼叫,也可以有物件來呼叫;
val2是成員變數,可以由類的物件來呼叫,這裡可以看出成員變數一定是以self.的形式給出的,因為self的含義就是代表例項物件;
val3不是成員變數,它只是函式fcn內部的區域性變數;
val4和val5也都不是成員變數,雖是以self.給出,但並沒有在建構函式中初始化。
注:在類方法中也可以呼叫其他方法
class dog():在上面例子中:在get_dog_information()方法中呼叫了get_dog_information(),且get_dog_information()方法前加了self引數,該引數的意義與其他self的意思一樣,都是代表實際本身def __init__(self,name,age):
self.name = name
self.age = age
def get_dog_information(self):
dog_information = "name is ,age is ".format(self.name,self.age)
return dog_information
def get_dog_speak(self,love):
dog_speak = self.get_dog_information() + love
return dog_speak
dog = dog("jake",13)
print(dog.get_dog_speak("swimming"))
name is jake,age is 13swimming
2 4 2 使用救援光碟
一些 linux 發行版本 例如 opensuse 在安裝光碟中包含了 救援模式 用於緊急情況下執行對系統的修復。要進入救援模式,首先用 2.2.1 節的方法用安裝光碟啟動計算機,選擇 rescue system 救援系統 命令,如圖 2.23 所示。在這個模式下,使用者可以在不提供口令的情況下以 ...
242 計算球體積
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 根據輸入的半徑值,計算球的體積。輸入 輸入資料有多組,每組佔一行,每行包括乙個實數,表示球的半徑。0輸出 輸出對應的球的體積,對於每組輸入資料,輸出一行,計算結果四捨五入為整數 hint pi 3.1415926 樣例輸入 1 ...
USACO2 4 2 穿越柵欄
問題描述 fj搭建了乙個巨大的用柵欄圍成的迷宮。幸運的是,他在迷宮的邊界上留出了兩段柵欄作為迷宮的出口,並且從迷宮中的任意一點都能找到一條走出迷宮的路。給定迷宮的寬 w 及長 h 和這個迷宮,然後計算從迷宮中最 糟糕 的那乙個點走出迷宮所需的最少步數。輸入格式 第一行 w和h 用空格隔開 第二行至第...