Python中对象方法、类方法、静态方法

Python中对象方法、类方法、静态方法

1.对象方法

class中面向对象的方法,即默认参数为self的方法,该类方法只能被实例化的对象调用,类名不能调用。示例程序如下:

class Student:

    # 对象方法,只能被实例调用,不能被类调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 对象方法,只能被实例调用,不能被类调用
    def get_email(self):
        return self.name + str(self.age) +"@School.com"


stu1 = Student("Mike",12)       # 生成实例
print(stu1.get_email())         # 实例调用该方法
print(Student.get_email())      # 类名调用,会出错

输出结果:
输出结果

2.类方法

类方法是类的方法,可以直接用类名进行调用,也可以通过实例化的对象进行调用,默认参数为cls,意为class。在class中,一般在类方法前加修饰器 @classmethod,表示类方法。示例程序如下:

class Student:
    # 对象方法,只能被实例调用,不能被类调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 对象方法,只能被实例调用,不能被类调用
    def get_email(self):
        return self.name + str(self.age) +"@School.com"

    @classmethod  # 修饰器,被类调用,也可以被实例化对象调用
    def from_string(cls, stu_string):
        name, age = stu_string.split('-')
        return cls(name, age)

stu_string = "Jone-17"
stu2 = Student.from_string(stu_string) # 被类调用
print(stu2.get_email())

stu3 = Student("Mily",15)
stu3.from_string("Mili-16")   # 被实例化对象调用
print(stu3.get_email())

输出结果如下所示:
结果

3.静态方法

静态方法可以理解为普通的方法或函数,其没有默认参数,修饰器为@staticmethod,示例程序如下:

class Student:
    # 对象方法,只能被实例调用,不能被类调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 对象方法,只能被实例调用,不能被类调用
    def get_email(self):
        return self.name + str(self.age) +"@School.com"

    @classmethod  # 修饰器,被类调用,也可以被实例化对象调用
    def from_string(cls, stu_string):
        name, age = stu_string.split('-')
        return cls(name, age)

    @staticmethod
    def is_workday(day):
        if day.weekday() == 5 or day.weekday == 6:
            return False
        return True
from datetime import datetime
day = datetime(2020,8,3)
print(Student.is_workday(day))

输出为:

在这里插入图片描述


版权声明:本文为weixin_45727931原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。