• Python正课78 —— 绑定方法 与 非绑定方法


    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12672581.html

    一:绑定方法:特殊之处在于 将调用者本身当做第一个参数 自动传入

    1.绑定给对象的方法:调用者是 对象,自动传入的是 对象

    class Mysql:
        def __init__(self, ip, port):
            self.ip = ip
            self.port = port
    
        def func(self):
            print(f'{self.ip} {self.port}')
    
    
    obj = Mysql('127.0.0.1', 3306)
    obj.func()      # 127.0.0.1 3306
    

    2.绑定给类的方法:调用者是 类,自动传入的是 类

    新的方法:

    setting.py

    IP = '127.0.0.1'
    PORT = 3306
    
    import settings
    
    
    class Mysql:
        def __init__(self, ip, port):
            self.nid = self.create_id()
            self.ip = ip
            self.port = port
    
        def func(self):
            print(f'{self.ip} {self.port}')
    
        @classmethod    # 绑定给类的方法
        def form_conf(cls):
            print(cls)
            return cls(settings.IP, settings.PORT)
    
        @staticmethod  # 将下述函数 装饰成一个静态方法
        def create_id():
            import uuid
            return uuid.uuid4()
    
        @classmethod
        def f1(cls):
            pass
    
        def f2(self):
            pass
    
    obj2 = Mysql.form_conf()    # <class '__main__.Mysql'>
    print(obj2.__dict__)        # {'nid': UUID('fb7015fb-8e6c-4c1e-9a24-241a7c3aff10'), 'ip': '127.0.0.1', 'port': 3306}
    

    二:非绑定方法

    没有绑定给任何人:调用者可以是类、对象,没有自动传参的效果

    class Mysql:
        def __init__(self, ip, port):
            self.ip = ip
            self.port = port
    
        @staticmethod  # 将下述函数 装饰成一个静态方法
        def create_id():
            import uuid
            return uuid.uuid4()
    
    
    obj1 = Mysql('1.1.1.1', 2208)
    
    # print(Mysql.create_id)  # <function Mysql.create_id at 0x037083D0>
    # print(obj1.create_id)   # <function Mysql.create_id at 0x037083D0>
    
    Mysql.create_id()
    obj1.create_id()
    
  • 相关阅读:
    code review
    自我封闭
    怎么验证?
    DRUPAL点滴
    CRLF CSRF XSS
    各种element/format 在manage display 下的选项
    html list <==> unformatted list
    ctrl + d 在phpstorm 和 eclipse 中的不同含义
    常量和变量的区别
    JSON和php里的数据序列化
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/12672581.html
Copyright © 2020-2023  润新知