定義類:
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...