目錄
本文主要講述了python類中的三類常用方法,普通方法、類方法和靜態方法。
本文主要參考了httywerdksps:強烈推薦一看這個系列的所有**。
import sys
sys.version
結果為'3.6.1 |anaconda 4.4.0 (64-bit)| (default, may 11 2017, 13:25:24) [msc v.1900 64 bit (amd64)]'
我們這裡定義乙個叫做學生的類,並在其中定義了乙個普通方法total_score()用於獲取某個例項的學生的總分。
class student(object):
num_of_stu = #學生人數
def __init__(self, name, age, math, chinese):
self.name = name #學生姓名
self.age = age #學生年齡
self.math = math #數學成績
self.chinese = chinese #語文成績
student.num_of_stu += 1 #每例項化乙個學生,人數加1,相當於靜態變數
def __del__(self):
student.num_of_stu -= 1 #每刪除乙個例項,人數減1
#普通方法,用於程式設計客棧計算學生的總分
def total_score(self):
return self.math + self.chinese
然後我們生成幾個例項試一下看
print (student.num_of_stu)
stu1 = student('bob', 11, 51, 33)
print (stu1.total_score())
stu2 = st程式設計客棧udent('peco', 12, 98, 79)
print (stu2.total_score())
print (student.num_of_stu)
del stu1
print (student.num_of_stu)
結果為0
8417721
現在假設我們想用乙個字串來實現實現乙個例項的例項化,那麼我們可以加上乙個類方法from_string
class student(object):
num_of_stu =ywerdks 0 #學生人數
def __init__(self, name, age, math, chinese):
self.name = name #學生姓名
self.age = age #學生年齡
self.math = math #數學成績
self.chinese = chinese #語文成績
student.num_of_stu += 1 #每例項化乙個學生,人數加1,相當於靜態變數
def __del__(self):
student.num_of_stu -= 1 #每刪除乙個例項,人數減1
#普通方法,用於計算學生的總分
def total_score(self):
return self.math + self.chinese
#類方法,用於用字串生成例項
@classmethod
def from_string(cls, stu_str):
name, age, math, chinese = stu_str.split('-')
return cls(name, int(age), float(math), float(chinese))
我們來試一下看
stu_str = "bob-12-50-34"
stu1 = student.from_string(stu_str)
print (stu1.name, stu1.total_score())
結果是bob 84.0
現在又假設我們需要類中有乙個方法可以幫我們看看是不是上課日,那麼我們就需要靜態方法了
class student(object):
num_of_stu = 0 #學生人數
def __init__(self, name, age, math, chinese):
self.name = name #學生姓名
self.age = age #學生年齡
self.math = math #數學成績
self.chinese = chinese #語文成績
student.num_of_stu += 1 #每例項化乙個學生,人數加1,相當於靜態變數
def __del__(self):
student.num_of_stu -= 1 #每刪除乙個例項,人數減1
#普通方法,用於計算學生的總分
def total_score(self):
return self.math + self.chinese
#類方法,用於用字串生成例項
@classmethod
def from_string(cls, stu_str):
name, age, math, chinese = stu_str.split('-')
return cls(name, int(age), float(math), float(chinese))
#靜態方法,用於判斷要不要上學
@staticmethod
def is_school_day(day):
if day.weekday() == 5 or day.weekday() == 6:
return false
return true
我們來試下看
import datetime
my_date1 = datetime.date(2017, 9, 15)
my_date2 = datetime.date(2017, 9, 16)
print (student.is_school_day(my_date1))
print (student.is_school_day(my_date2))
結果是true
false
類方法,普通方法和靜態方法
類方法,普通方法和靜態方法 class game object 類屬性 num 0 例項方法 必須得有引數,def init self 例項屬性 self.name laowang 例項方法 必須得有引數 第乙個引數傳遞的是當前的物件 def init a 例項屬性 a.name laowang 類...
python中的普通方法 類方法和靜態方法的區別
面試中遇到這個問題,現在來總結一下 普通方法 預設有個self引數,只有類的物件可以呼叫 類方法 需要加上 classmethod裝飾器,預設cls引數,可以被類和物件呼叫 靜態方法 用 staticmethod裝飾器,類的靜態方法沒有引數,可以直接使用類名呼叫 不管是普通方法還是類方法,預設的se...
Python中普通欄位和靜態字段
class province 靜態字段,屬於類 country 中國 def init self,name 普通字段,屬於物件 self.name name print province.country print province.name shanxi province 陝西 print sha...