首页 > 其他 > 详细

classmethod与staticmethod isinstance与issubclass

时间:2020-03-29 13:34:04      阅读:53      评论:0      收藏:0      [点我收藏+]

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

classmethod与staticmethod isinstance与issubclass

原文:https://www.cnblogs.com/zqfzqf/p/12591756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!