2 4 2Python self擴充套件

2021-10-05 02:58:59 字數 3195 閱讀 2764

總目錄:

python - 子目錄:

在類基礎中簡單說過self的用法和含義。這裡我們細說一下。

首先定義乙個類

class dog(object):

pass

dog = dog()

因為類有模板的作用,因此,可以在建立例項的時候,把我們認為必須繫結的屬性強制填寫進去。這裡就用到python當中的乙個內建方法__init__方法,例如在dog類時,把name、age等屬性綁上去:

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):

def __init__(self, name, age):

self.name = name

self.age = age

dog =dog('哈士奇',2)

print(dog.name)

print(dog.age)

哈士奇

2

這裡self就是指類例項本身,self.name就是dog例項物件,是該dog例項物件獨有的。而name是外部傳來的引數,不是dog類所自帶的。故,self.name = name的意思就是把外部傳來的引數name的值賦值給dog例項物件自己的屬性變數self.name。

例2:

class dog:

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

汪汪汪

self是指當前被呼叫的物件,對的,就是上邊剛被你例項化的物件p。當你需要呼叫當前物件(例項物件)的方法或者屬性時,要用self. 來進行呼叫。

例3:

class dog:

def setdog(self,x,y):

self.x = x

self.y = y

def printdog(self):

print("我喜歡什麼狗:"+self.x +"和"+self.y)

dd = dog()

dd.setxy("哈士奇","中華田園犬")

self引數:當例項物件dd去呼叫setdog方法的時候,它傳入的第乙個引數就是dd,那麼self.x = "哈士奇",self.y = "中華田園犬"也就相當於dd.x = "哈士奇",dd.y = "中華田園犬",所以你在例項物件,甚至類物件中都看不到x和y,因為這兩個屬性是只屬於例項物件dd的。

例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():

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

在上面例子中:在get_dog_information()方法中呼叫了get_dog_information(),且get_dog_information()方法前加了self引數,該引數的意義與其他self的意思一樣,都是代表實際本身

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 用空格隔開 第二行至第...