python类中@符号的作用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

python类中@符号的作用,chatgpt-3.5生成


一、代码示例

class Demo():
    
    def fun1(self):
        pass
    
    @classmethod
    def fun2(cls):
        pass
    
    @staticmethod
    def fun3(self):
        pass
 
 
demo = Demo()
print(demo)
print(demo.fun1)
print(demo.fun2)
print(demo.fun3)

二、解释

在 Python 中,@ 符号用于装饰函数的方法,这些装饰器可以改变或增强函数的行为。你提到的代码中的 @classmethod@staticmethod 装饰器分别有不同的作用。

具体解释

  1. 实例方法(fun1):

    • fun1 是一个普通的实例方法。它的第一个参数通常是 self,表示调用该方法的对象。这是常规的方法定义方式。
  2. 类方法(fun2):

    • fun2@classmethod 装饰,这意味着它可以通过类名或实例调用,但它的第一个参数是 cls,表示类本身,而不是实例。使用 @classmethod 可以让你在不创建类实例的情况下访问类的属性和方法。
  3. 静态方法(fun3):

    • fun3@staticmethod 装饰,这表明它是一个静态方法,它不需要访问类或实例的任何属性。它的第一个参数是 self,这在这里是不必要的,因为静态方法不应该依赖于实例或类。实际上,这样定义是错误的,正确的静态方法应该没有 self 参数。例如:
      @staticmethod
      def fun3():
          pass
      

实际效果

  • 在你的代码中,fun1 是一个实例方法,应该通过实例来调用,如 demo.fun1()
  • fun2 是一个类方法,可以通过 Demo.fun2()demo.fun2() 来调用。
  • fun3 是一个静态方法,应该去掉 self 参数,理想的调用方式是 Demo.fun3()demo.fun3()

总结

  • @classmethod@staticmethod 在类设计中很有用,可以帮助你定义与类或实例相关的方法,而不需要将其与特定的实例绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值