classmethod与staticmethod内置装饰器

1、classmethod

  是一个装饰器,给在类内部定义方法装饰,将类内部的方法变为 “类的绑定方法”

 

class DB:
    __data = "tom is very cute"
    def __init__(self, user, pwd, role):
        self.user = user
        self.pwd = pwd
        self.role = role

    @classmethod
    def check_db(cls, user, pwd, role):    # cls指的是类
        # 在类方法内部调用类产生一个实例  --->  对象
        obj = cls(user, pwd, role)
        # 查看数据前必须通过校验
        if obj.user == "root" and obj.pwd == "123" and obj.role == "admin":
            return cls.__data

print(DB.check_db("root", "123", "admin"))

  执行结果:

tom is very cute

 

2、staticmethod

  staticmethod:静态方法

  是一个装饰器,给在类内部定义方法装饰,将类内部的方法变为 “非绑定方法”

 

class Foo:
    @staticmethod
    def func(self):
        print(self)

obj = Foo()
# 对象调用非绑定方法
obj.func(123)

# 类调用非绑定方法
Foo.func(1234)

  执行结果:

123
1234

 

3、绑定方法总结

  ① 对象的绑定方法:

    由对象来调用,由谁来调用,会将谁(对象)当做第一个参数传入

 

  ② 类的绑定方法:

    由类来调用,由谁来调用,会将谁(类)当做第一个参数传入

 

  ③ 非绑定方法:

    可以由对象或者类来调用,谁来调用都是一个普通方法(普通函数),方法需要传入几个参数,调用时候就得传入几个参数

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/jsxxd/p/13886335.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!