为什么我@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)

http://img.mukewang.com/climg/5d96bbfa0917ee5203720107.jpg

写回答

2回答

好帮手乔木

2019-10-05

同学你好:

静态方法:

静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中。

静态函数可以通过类名以及实例两种方法调用。

如果我解决了同学的问题,请采纳!学愉快^_^.


0

qq_多大_0

提问者

2019-10-04

静态方法到底有什么用?加了静态方法,通过类和实例访问都能实现?

0

0 学习 · 8160 问题

查看课程