面向对象(四)-实例,类,静态方法

实例方法,类方法,静态方法

# 格式 
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 方法总结

posted @ 2020-12-29 17:23  小杜打醋尢买布  阅读(108)  评论(0)    收藏  举报