【python的静态方法,classmethod方法和__call___魔法方法】

staticmethod,静态方法

在python中,使用静态方法可以实现不需要实例化对象的绑定就可以直接调用的函数,换句话
就是可以把独立的函数写入到一个类里面

xx:公有变量

_xx:单下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入

__xx:双下划线,私有化属性或方法,无法在外部直接访问(名字改写不能访问)

xx:双前后下划线,系统定义名字(用户避免使用)

xx_:单下划线,用于避免与Python关键词的冲突

class A:
    __x=520
    _y=100
    @staticmethod
    def func():
        print('静态方法例子')
        
#如果我不直接一个实例化对象直接调用func函数
A.func()
#我使用一个实例化例子再去访问func函数,效果是一样的,
#都是输出:静态方法例子
a=A()
a.func()
#a._y#本行结果与下一行结果一致
A._y
a._A__x

在这里插入图片描述

classmethod,绑定类方法

类方法可以实现对类的绑定,关键字 @classmethod
比如我想知道本身这个类被实例化了几次,就可以使用该方法

class A():
    count=0
    def __init__(self):
        A.count+=1
    @classmethod
    def get_class_used(cls):
        print(f"一共实例化了{cls.count}次对象")

a1=A()
a2=A()
A.get_class_used()

输出:一共实例化了2次对象

call,可调用类类方法

python的__call__魔法方法
class A:
    def __init__(self,exp):
        self.exp=exp
    def __call__(self,base):
        return base**self.exp
#callable(A)  返回True
#这里A相当于是一个可以调用的对象了(python里面对象分为可以调用和不可以调用)
a=A(2)
a(3)#相当与计算3的平方
a(10)#相当于计算10的平方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书中藏着宇宙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值