1.类对象所拥有的方法,需要@startimcemethod 来表示静态方法
2.静态方法不需要参数。
3.静态方法主要用来存放逻辑性的代码,本身和类以及实例对象没有交互,也就是说,在静态方法中,不会涉及到类中方法和属性的操作。
1.类对象所拥有的方法,需要@startimcemethod 来表示静态方法
2.静态方法不需要参数。
3.静态方法主要用来存放逻辑性的代码,本身和类以及实例对象没有交互,也就是说,在静态方法中,不会涉及到类中方法和属性的操作。
#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: haozhengwei @file: 类方法和静态方法.py @time: 2022/01/10 @desc: """ # 类方法:类对象所拥有的方法,需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数, # 类方法可以通过类对象、实例对象调用 class People: country='China' #类方法需要用@classmethod修饰 @classmethod def get_country(cls): return cls.country pass @classmethod def change_country(cls, data): cls.country=data#在类方法中修改类属性 pass pass print(People.get_country())#通过类对象去引用 P=People() print('实例对象访问', P .get_country()) People.change_country('英国') print(People.get_country()) # 静态方法:类对象所拥有的方法,需要用@staticmethod来表示,静态方法不需要任何参数。 class Person(object): country ='China' def __init__(self, name): self.name = name #静态方法用staticmethod装饰 @staticmethod def get_country(): print(Person.country) people = Person('xiaoming') result = Person.get_country()#注意,一般情况下,我们不会通过实例对象去访问静态方法,减少资源开销。 #为什么要使用静态方法呢? #由于静态方法主要来存放逻辑性的代码,本身和类以及实例对象没有交互,在静态方法中不会涉及到类中方法和属性的操作。 #数据资源能够得到有效利用 #demo 返回当前时间 #返回当前的系统时间 import time class TimeTest: def __init__(self,hour, min, second): self.hour = hour self.min = min self.second = second @staticmethod def showTime(): return time.strftime('%H:%M:%s',time.localtime()) pass pass print(TimeTest.showTime()) t=TimeTest(2, 10, 5) print(t.showTime()) #类方法、实例方法、静态方法对比 # 1、类方法的第一个参数是类对象cls,通过cls引用的类对象的属性和方法; # 2、实例方法的第一个参数是实例对象self,通过self引用的可能是类属性、也有可能是实例属性 # 不过,存在相同名称的实例属性和类属性的情况下,实例属性的优先级更高。 # 静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。