1. 程式人生 > 實用技巧 >面向物件(四)-例項,類,靜態方法

面向物件(四)-例項,類,靜態方法

例項方法,類方法,靜態方法

# 格式 
class A: 

      def 例項方法(self): 
      """例項方法""" 
      pass 

      @classmethod 
      def 類方法(cls):
      """類方法""" 
      pass 

      @staticmethod 
      def 靜態方法(): 
      pass

程式碼演示

class Student: 

      gender = "男" # 類屬性:公共資源
 
      def __init__(self, name, age): 
            self.name = name self.age = age 
            # self.gender = gender 

      def write_code(self): 
            """寫程式碼"""
            print(f"{self.name}在教室中寫程式碼") 

      @staticmethod 
      def do_homework(): 
            """寫家庭作業""" 
            print("認真完成家庭作業") 

      @classmethod
      def modify_gender(cls):
             """修改類屬性 
               cls:當前的類名 """ 
            # Student.gender = "女" 
            cls.gender = "女" # 建議方法 
            print("修改成功") 

      @staticmethod 
      def info(): 
            """展示學生資訊""" 
            print("教室位置:三班") 
            print("班級人數:8人") 
            print("學生性別:都是男生") 

zs = Student("張三",20) 
ls = Student("李四",25) 

# 呼叫例項方法:可以 
# zs.write_code() 

# 呼叫靜態方法:可以 
# zs.do_homework() # 

#呼叫類方法:可以,不推薦 
# zs.modify_gender() 

# 修改了類屬性為女 
# print(zs.gender) # 女 

# 類物件 
# 直接呼叫例項方法:報錯 
# Student.write_code() # 報錯 
# Student.write_code(zs) # 正確 
# Student.write_code(Student) # 錯誤
 
# 呼叫類方法:可以,推薦 
Student.modify_gender() 

# 呼叫靜態方法:可以 
Student.do_homework()

2 是否能被物件呼叫

  • 例項物件均可以訪問
  • 類物件可以訪問類方法和靜態方法,不能訪問例項方法

3 是否能訪問屬性

  • 例項方法:可以訪問類屬性和例項屬性
  • 類方法:可以訪問類屬性,不能訪問例項屬性
  • 靜態方法:均不能訪問

4 應用場景

  • 例項方法: 用於描述具體例項的相關操作。
  • 類方法:用於對類屬性的相關操作。
  • 靜態方法:用於定義與物件無關的獨立功能

5 方法總結