为什么我@staticmethod方法也能通过实例调用类的属性
来源:3-5 类的静态方法和实例方法
qq_多大_0
2019-10-04 11:26:51
class cat(object):
tag = "猫科动物"
def __init__(self,name):
self.name=name
# 实例的方法,因为括号里是self
def show_info(self):
print("类的属性:{} 实例的属性{}".format(self.tag,self.name))
# 静态方法,无self和cls
@staticmethod
def breath():
print("静态方法")
# 类方法,有cls,不能访问实例化的属性name
@classmethod
def show_info2(cls):
print("类的属性:{}".format(cls.tag))
if __name__=="__main__":
# 通过类的实例进行调用
cat_balck = cat("jiujiu")
cat_balck.show_info()
# 通过类进行调用
cat.show_info2()
# 通过静态方法进行调用
print(cat.tag)
print(cat_balck.tag)
2回答
同学你好:
静态方法:
静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中。
静态函数可以通过类名以及实例两种方法调用。
如果我解决了同学的问题,请采纳!学愉快^_^.
qq_多大_0
提问者
2019-10-04
静态方法到底有什么用?加了静态方法,通过类和实例访问都能实现?
相似问题