Python中的 類(class)(1)
技術標籤:Python基礎pythonclass類類的屬性類的方法
Python中的 類(class)(1)
前言
類(class)是python中很重要的一個概念,也是我們面象物件程式設計中最重要的概念主之一
如何去理解類,就像如何去理解函式(方法)一樣,首先要有一顆常態的心,不要因為新名詞,新事物,而自亂陣腳.
然後,儘量用類比的方法去學習一個新事物,會讓你更容易理解.
這裡簡單的說明一下本人對類的理解
從使用角度講,類是一個有特點的功能整合者.
即當我們說到一個類的時候,
- 通常會去了解這個類能做什麼事情.比如,我們Pygame中的矩形(Rect)就是一個類,它可以移動.
- 這個類有什麼特點(屬性)
從程式設計角度講,類的組織是為了更好的重用程式碼,更好的組織程式碼,以及本質是一個數據型別.
本節提要
內容詳情
類的宣告:
class MyClass(object):
pass
class: 是一個關鍵字,就像定義函式時用的def一樣,說明我們要定義的是一個類
MyClass: 我們設計的類的類名.就像我們所有的地球人,統稱"人"一樣,對一個型別的統稱
引數object:父類
類的構函式
class MyClass(object):
def __init__(self, args):
pass
init(self,args)
這個函式稱為類的建構函式
用來對類進行一些初始化的操作
這個函式在類進行例項化的時候自動呼叫
例項:
class MyClass(object):
def __init__(self, text):
print(text)
mc = MyClass("我是在初始化的時候列印的") # 類的例項化
可以看到,當我們例項話的時候,會自動呼叫__init__()函式
名詞:
類中的函式,通常稱為類的方法
注意:
建構函式中,函式名是固定的,第一個引數self也是固定的.
如果沒有self這個引數,建構函式會出錯
看以下例項
class MyClass2(object):
def __init__ (text):
print(text)
mc = MyClass2("我是在初始化的時候列印的")
效果圖
總結:
建構函式:
- 函式名:init()
- 第一個引數self固定的
類的方法
類的例項方法要點:
- 定義在類內部的函式
- 第一個引數必須是self
- 使用時,例項名.方法名()
# 類的方法示例
class MyClass3(object):
# 建構函式
def __init__(self, text):
print("我是構造方法" + text)
# 類的方法:move()
def move(self):
print("我移動了")
mc4 = MyClass3("mc4")
mc4.move() # 呼叫類的move()方法
類的靜態方法:
當我們希望一個類,不例項化也能呼叫類的某個方法時,這個方法應該被定義成靜態方法
- 方法定義前加下@staticmethod修飾
- 方法的引數沒有self
- 呼叫時直接用類名.方法名()來使用
class MyClass5(object):
# 建構函式
def __init__(self, text):
print("我是構造方法" + text)
# 類的靜態方法,可以例項化直接呼叫
@staticmethod
def dd():
print("所有例項共有方法")
MyClass5.dd()
類的屬性
第一種:例項屬性
要點:
- 定義在建構函式/類的方法內
- 在類的定義中用self.屬性名來使用
- 例項化類後用實全例名.屬性名來訪問或者修改
第二種: 類的屬性
要點: - 定義在方法外
- 在類的定義中用類名.屬性名來使用
- 類的屬性被所有類的例項所共有(改變一次類屬性,其他的例項的類屬性也會變)
- 可以直接使用類名.屬性名來使用
- 當類的屬性被例項單獨改變時,這個屬性會與例項繫結,不再受類.屬性名改變而改變
# 類的屬性示例
class MyClass6(object):
weight = 100 # 類屬性
def __init__(self, name, age):
self.name = name # 例項屬性name
self.age = age # 例項屬性age
print(MyClass6.weight) # 列印類屬性
mc6_1 = MyClass6("mc6_1", 12) # 例項化類
print(mc6_1.name, mc6_1.age) # 訪問例項化屬性
# 改變類屬性與例項化屬性
MyClass6.weight = 200 # 我又重了
mc6_1.name = "mc6_1改名了"
mc6_1.age = 11 #我變年輕了
print(MyClass6.weight)
print(mc6_1.name, mc6_1.age) # 訪問例項化屬性
mc6_2 = MyClass6("mc6_2", 20)
print(mc6_2.weight)
mc6_2.weight = 300 # 改變了例項的類屬性
print(mc6_1.weight)
print(mc6_2.weight)
MyClass6.weight = 400 # 再改類屬性
print(mc6_1.weight)
print(mc6_2.weight) # 該例項的此類屬性不會再隨著類名.屬性名 的操作方法改變而改變了
後記
類的內容還有很多,這裡簡單的介紹了類的基本內容:
- 類的定義方法
- 類的建構函式
- 類的方法
- 類的屬性
這幾天在折騰電腦,給自己的電腦裝了個黑蘋果系統.由於無線網絡卡驅動問題,導致黑蘋果系統還無法正式投入使用.明天網絡卡就能到了,到時候用黑蘋果感受一下寫程式碼的感覺是不是比win好點.
今天更新的內容有點少,但是內容的深度比較大,需要慢慢來體會