• 11、classmethod和staticmethod


    类中定义的函数有两大类(3小种)用途,一类是绑定方法,另外一类是非绑定方法

    1. 绑定方法:
    特点:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
    1.1 绑定给对象的:类中定义的函数默认就是绑定对象的
    1.2 绑定给类的:在类中定义的函数上加一个装饰器classmethod


    2. 非绑定方法
    特点: 既不与类绑定也不与对象绑定,意味着对象或者类都可以调用,但无论谁来调用都是一个普通函数,根本没有自动传值一说

    class Foo:
        def func1(self):
            print('绑定给对象的方法',self)
    
        @classmethod
        def func2(cls):
            print('绑定给类的方法: ',cls)
    
        @staticmethod
        def func3():
            print('普通函数')
    #
    #
    # obj=Foo()
    
    # obj.func1()
    # print(obj)
    
    # Foo.func2()
    
    # 绑定方法
    # print(obj.func1)
    # print(Foo.func2)
    
    #非绑定方法
    # print(obj.func3)
    # print(Foo.func3)
    
    
    
    import settings
    
    class Mysql:
        def __init__(self,ip,port):
            self.id=self.create_id()
            self.ip=ip
            self.port=port
    
        def tell_info(self):
            print('%s:%s:%s' %(self.id,self.ip,self.port))
    
        @classmethod
        def from_conf(cls):
            return cls(settings.IP, settings.PORT)
    
        @staticmethod
        def create_id():
            import uuid
            return uuid.uuid4()
    
    # obj=Mysql('1.1.1.1',3306)
    # obj.tell_info()
    
    
    obj1=Mysql.from_conf()
    
    obj1.tell_info()
  • 相关阅读:
    Java EE部分-- 各框架对比与项目优化
    Java EE部分--Mybatis
    Java EE部分--MVC
    Java EE部分--Hibernate、Struts
    Java EE部分--spring(二)
    Java EE部分--spring(一)
    IO和NIOAIO
    JDK、 反射

    线程(二)
  • 原文地址:https://www.cnblogs.com/z-x-y/p/10047535.html
Copyright © 2020-2023  润新知