美文网首页
如何定义类方法和静态方法?(转译)

如何定义类方法和静态方法?(转译)

作者: 小黑佬 | 来源:发表于2019-10-29 10:03 被阅读0次

要在python中定义类方法,我们使用@classmethod装饰器,并使用@staticmethod装饰器定义静态方法。
让我们看一个例子,以了解它们之间的区别。假设我们要创建一个类Person。现在,python不支持C ++或Java之类的方法重载,因此我们使用类方法创建工厂方法。在下面的示例中,我们使用类方法从出生年份创建一个人员对象。

如上所述,我们使用静态方法来创建实用程序函数。在下面的示例中,我们使用静态方法来检查一个人是否成年。
实例:

# Python program to demonstrate  
# use of class method and static method. 
from datetime import date 
  
class Person: 
    def __init__(self, name, age): 
        self.name = name 
        self.age = age 
      
    # a class method to create a Person object by birth year. 
    @classmethod
    def fromBirthYear(cls, name, year): 
        return cls(name, date.today().year - year) 
      
    # a static method to check if a Person is adult or not. 
    @staticmethod
    def isAdult(age): 
        return age > 18
  
person1 = Person('mayank', 21) 
person2 = Person.fromBirthYear('mayank', 1996) 
  
print person1.age 
print person2.age 
  
# print the result 
print Person.isAdult(22)

Output

21
21
True

参考:
Python中的类方法与静态方法

相关文章

  • 如何定义类方法和静态方法?(转译)

    要在python中定义类方法,我们使用@classmethod装饰器,并使用@staticmethod装饰器定义静...

  • php中静态类和非静态类

    静态类:类中含有static定义的静态属性或方法的类 静态类访问方法: 1、静态方法不需要实例化对象,可以通过类名...

  • 30.Python装饰器

    装饰器可以用于包装类的静态方法和类方法。静态方法的定义中没有self参数,可以通过类直接来调用。类方法中虽然没有s...

  • 深入理解Java中的final、finally和finalize

    final final可以用于以下四个地方 定义变量,包括静态的和非静态的。 定义方法的参数。 定义方法。 定义类...

  • es6学习笔记整理(十二)类和对象

    类的概念 基本语法 类的基本定义和生成实例 类的继承 继承传参 静态方法 静态方法static: 通过类调用,而不...

  • 静态和非静态

    静态方法在类定义时都已经被装载和分配,非静态方法只有在实例化时才被分配内存。 静态方法的生命周期和相应的类一样长,...

  • python 高级语法

    一.Python 中类方法、类实例方法、静态方法有何区别定义区别:1.类方法和静态方法分别有专门的修饰符 @cla...

  • 23、扩展方法

    1.定义: 2.定于扩展方法 Personl类的定义 为Person类扩展方法 扩展方法被定义为静态方法,但它们是...

  • python 面向对象中实例方法,静态方法和类方法

    python面向对象中有三种方法,分别为实例方法,静态方法和类方法 实例方法 实例方法是在类中定义的方法,并且方法...

  • Python静态方法@staticmethod和类方法@clas

    Python静态方法@staticmethod和类方法@classmethod经常出现在类的定义中,二者和常规实例...

网友评论

      本文标题:如何定义类方法和静态方法?(转译)

      本文链接:https://www.haomeiwen.com/subject/uldwvctx.html