python程式設計普通及類和靜態方法示例詳解

2022-09-24 23:24:14 字數 3065 閱讀 8745

目錄

本文主要講述了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...