Python考试题--第57道题目--修饰器@staticmethod和@classmethod的含义和区别--2022年04月12日
原创目录
一、@staticmethod和@classmethod共同点和不同点:
2、@staticmethod和@classmethod实际应用:
一、@staticmethod和@classmethod共同点和不同点:
1,常见:
用于声明静态方法。
静态方法是无需实例化类即可调用的方法,相当于普通函数,格式为:类名。.方法名。
2、区别:
-
@staticmethod不需要表示对象本身。self和它自己的类cls参数,就像普通函数一样,可以定义。
-
@classmethod也不需要self参数,但第一个参数需要表示其自己的类。cls参数,避免硬编码。
类中的静态成员在静态方法中被引用,并且可以使用类名。.静态成员名称,如果类名称更改,则所有引用都需要修改类名称。
如果是用@classmethod可以使用的声明的静态方法。cls参数是指静态成员。如果类名称更改,则不需要更改。
2.代码示例演示:
1静态变量和成员变量之间的区别:
class Myclass:
bar = 1 # 静态变量
def __init__(self) -> None:
self.count = 20 # count是成员变量
def process(self): # 定义通用方法
print(process:,self.count)
# 如何确定它是否为静态变量可以在不实例化的情况下调用。
print(Myclass.bar)
# count是需要实例化才能调用的成员变量
c = Myclass()
print(c.count)
# 输出:
# 1
# 20
2、@staticmethod和@classmethod实际应用:
class Myclass:
bar = 1 # 静态变量
def __init__(self) -> None:
self.count = 20 # _count是成员变量
def process(self): # 定义通用方法
print(process:,self.count)
@staticmethod
def static_process():
print(static_process)
print(Myclass.bar)
@classmethod
def class_process(cls):
print(class_process)
print(cls.bar) # 调用静态变量
print(cls)
cls().process() # 调用方法实例化
print(cls().count)
Myclass.static_process()
Myclass.class_process()
Myclass.bar = 123
Myclass.static_process()
结果如下:

版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123





