实例方法,类方法,静态方法
# 格式
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 方法总结