Python中的類與變數

2021-08-27 09:04:39 字數 2394 閱讀 4831

定義類:

class student():  # 居然有括號

name = 『』 # 定義變數

age = 0

def print_file(self): # 定義函式,」self」是必須的

print(『name:』 + self.name) # 引用變數也要加self

# print_file()

使用類的方法(例項化):

student = student()

student.print_file() # 呼叫類下面的方法

類只負責描述,不負責執行。這種思想也間接地解釋了為什麼類裡不能使用函式(像第乙個示例最後一行那樣)。

類和物件(乙個形象的比喻:類是模板,物件是印刷機):

class student():

name = 『』 # 類變數

age = 0 # 抽象的一類事物「student」帶有個體的屬性name和age,所以在這裡,類變數中定義age和name是不合適的

sum = 0 # 這樣的屬性定義給一類事物「student」比較合適

# 使用建構函式生產不同的物件,這是建構函式的意義

def __init__(self, name, age): # 增加額外引數後,那麼這幾個引數在例項化時必須傳入

# name = name 這樣子print(student1.name)會列印』』,為什麼?見後文。

self.name = name # 這樣做是為了改變類下的name和age的初始值(最初的值』』和0),也就是定義例項變數

self.age = age # 將傳入的引數儲存為不同物件的特徵值,也就是例項變數

self.__class__.sum += 1 # 呼叫類變數

print(age) # (1)

print(name)

print(『student』)

def do_homework(self):

print(『homework』)

# 嘗試生產不同的物件

student1 = student()

student2 = student()

student3 = student()

這幾個物件一樣嗎?可以這樣說。但在計算機裡是不一樣的,可以通過id()測試。

# 測試建構函式

student = student()

student.__init__() # 可以這樣呼叫建構函式,但通常不會這樣做

# 上面兩行將會列印兩個』student』,因為__init__在例項化時自動呼叫

student.__init__()返回什麼? 返回none。可以強制return其他嗎?不行,會報錯。

# 測試新增引數的建構函式

student1 = student(『石敢當』, 18)

print(student1)

# 測試例項變數和類變數

student1 = student(『石敢當』, 18)

student2 = student(『喜小樂』, 21)

print(student1.name)

print(student2.name)

print(student.name)

# 理解為什麼__init__建構函式裡name = name時列印』』

print(student1.name)

print(student1.__dict__) # 我們用__dict__函式來一**竟:字典儲存著當前物件下面所有變數,這裡列印的是空字典

# 那既然是空字串那麼為什麼不直接列印none而是空字串?因為這是python內部變數查詢機制,它取類裡找到了同名變數』name』

# 例項方法引數self指代的就是呼叫該方法的例項,類方法同理

兩個思考題;

上述**中的(1)裡將print什麼內容?

- 列印內容和self.name是一樣的。

- 但name是讀取的我們的形參』name』,也就是我們傳入的引數的值。當你把形參改變,可以看到它會報錯。

例項方法如何訪問和使用類變數?

- 例項變數內部可以student.name,通過類來呼叫。或者self.__class__.name

# 類方法

@classmethod

def plus_sum(cls): # 操作類相關的變數。這裡舉例操作sum屬性。

cls.num += 1

print(cls.sum)

student.plus_sum()

# 靜態方法可以通過例項和類都可以呼叫

# 類方法和靜態方法裡可以呼叫例項變數self.name嗎?不可以,self is not defined.

python中的類,類變數,例項變數

這幾天寫 的時候碰到乙個python中的小問題,找了好半天才解決,所以記錄下來。classa object def init self self.x y def call self for i in range 5 print x self.x print y y 輸出的結果是 x 5,5,5,5,...

python 類中的變數 方法

一.python 類中的變數分為類變數,例項變數,self coding utf 8 class a object date 20201215 類變數 def init self self.name stephen 例項變數 def str self return self.date self.na...

python 類之類變數與例項變數

前面,我們已經知道了如何定義乙個python的類,那麼類中可以包含什麼內容呢?乙個python類中,包含了變數和方法。我們看如下 其中的age變數和gender變數定義在類中,但在方法外,這樣的變數就是類變數。類變數為所有例項所共享的變數。對上面的程式做了細微的修改 我們例項化乙個物件 person...