python装饰器class_python基础-内置装饰器classmethod和staticmethod

面向对象编程之classmethod和staticmethod

classmethod 和 staticmethod都是python内置的装饰器

classmethod 的作用:给在类内部定义的方法装饰,将类的内部方法变为类的绑定方法

绑定方法的特殊之处是会将对象本省当作第一个参数传入方法中

类的绑定方法:由类来调用,哪个类调用,就默认将哪个类当作第一个参数传入

class DB:

__data = "lee is a big haha!"

def __init__(self, user, pwd):

self.user = user

self.pwd = pwd

# 查看数据方法

# 使用classmethod装饰器 让DB类直接调用check_db()

@classmethod

def check_db(cls, user, pwd):

if user == "dawn" and pwd == "123":

print("校验通过……")

print(cls.__data)

# 一般都是通过创建对象,通过对象.方法() 调用方法

db_obj = DB("lee", "123")

db_obj.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!

# 给类中的check_db()加上classmethod 装饰,让类直接调用看看

DB.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!

staticmethod 的作用:给在类内部定义方法中装饰,将类内部的方法变为非绑定方法

非绑定方法:可以由类或对象来调用。不论是谁调用,方法中有几个参数,就要传入几个传参,跟调用函数的方式一样。

class Demo:

@staticmethod

def func(self):

print(self)

# 创建对象调用func

demo = Demo()

# 理论上,不用传参,但不传参就报错

demo.func(1234) # 输出结果:1234

# 通过类调用func

# 理论上,不用传参,但不传参就报错

Demo.func(2345) # 输出结果:2345

总结:

对象的绑定方法

由对象来调用,会将对象当做第一个参数传入给该方法。

实现:在类内部定义(封装)一个方法即可

类的绑定方法

由类来调用,会将类当做第一个参数传入给该方法。

实现:在类内部方法中,使用classmethod装饰器即可

非绑定方法

由对象/类来调用,由谁来调用,它都是一个普通函数,内部需要接受几个参数,就得传入几个。

实现:在类内部方法中,使用staticmethod装饰器即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值