• classmethod与staticmethod isinstance与issubclass


    classmethod

    翻译:一个类方法

    classmethod是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类使用

    ​ 对象的绑定方法特殊之处

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

    ​ 类的绑定方法特殊之处

    ​ 由类来调用,会将类当作第一个参数传给该方法

    class People:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        @classmethod
        def tell_info(cls):#cls=People
            print(cls)
            print('此处是类方法')
    
    p=People('tank',18)
    p.tell_info()
    '''
    <class '__main__.People'>
    此处是类方法'''
    People.tell_info()
    '''
    <class '__main__.People'>
    此处是类方法'''
    

    staticmethod

    staticmethod是一个装饰器,可以装饰给类内部的方法,使该方法既不绑定给对象,也不绑定给类

    import hashlib
    import uuid
    import settings
    
    class Teacher:
        def __init__(self,user,pwd):
            self.user=user
            self.pwd=pwd
    
        def index(self):
            if self.user=='tank' and self.pwd=='123':
                print('验证通过,显示主页')
    
        @classmethod
        def login_auth_from_settings(cls):
            obj=cls(settings.USER,settings.PWD)#个人认为就是调用了类
            return obj #Teacher()-->return obj
    
        @staticmethod
        def create_id():
            uuid_obj=uuid.uuid4()
            md5=hashlib.md5()
            md5.update(str(uuid_obj).encode('utf-8'))
            return md5.hexdigest()
    
    obj=Teacher.login_auth_from_settings()
    obj.index()#验证通过,显示主页
    
    tea1=Teacher('tank','123')
    tea1.index()#验证通过,显示主页
    
    #import uuid #是一个加密模块,uuid4通过时间戳生成一个世界上唯一的字符串。
    print(uuid.uuid4())#617e8e86-ea4b-4004-bc67-03984dd0d0e0
    print(type(uuid.uuid4()))#<class 'uuid.UUID'>
    
    print(Teacher.create_id())#9f9cb0402a68270ad629af2060656457
    print(tea1.create_id())#f0973188d6964cb4f7259259b74b2c2c
    
    

    isinstance

    __class__:对象的属性,获取该对象当前类

    isinstance(参数1,参数2):

    ​ python内置的函数,可以传入两个参数,用于判断参数1是不是参数2的一个实例。

    ​ 判断一个对象是否是一个类的实例。

    issubclass

    issubclass(参数1,参数2):

    ​ python内置的函数,可以传入两个参数,用于判断参数1是否是参数2的子类。

    ​ 判断一个类是否是另一个类的子类

    class Foo:
        pass
    
    class Goo(Foo):
        pass
    
    foo_obj=Foo()
    print(isinstance(foo_obj,Foo))#True
    print(issubclass(Goo,Foo))#True
    

  • 相关阅读:
    打印图片的属性和实现另存图片功能以及使用numpy
    opencv3.3 安装环境教程以及实现个图片读取功能
    在linux 创建网络会话和绑定两块网卡
    安装yum仓库
    C#添加错误日志信息
    关于使用宏将csv批量转换成xls的分享
    C#关于MySQL中文乱码问题
    无法启动iis express web服务器解决
    关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享
    为什么QQ能上却打不开网页呢?
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/12591756.html
Copyright © 2020-2023  润新知