zoukankan      html  css  js  c++  java
  • 面向对象之绑定与非绑定方法

    绑定方法:(绑定给谁就由谁来调用,谁来调用就会将谁当做第一个参数传入)

    1. 绑定对象的方法

        类中定义的函数,函数体不加classmethod装饰器装饰的,都是默认绑定给对象的对象方法

        语法:

          def 方法名(self):

            pass

    1. 绑定类的方法

        类中函数在定义阶段,函数体上方加装饰器classmethod的,都是绑定给类的方法

        语法:

          @classmethod

          def 方法名(cls):

            pass

    非绑定方法:

        @staticmethod装饰装饰的方法

         非绑定方法是 即不与类绑定,也不与对象绑定的方法,意味着对象与类都可以调用,无论谁来调用都是一个普通函数,没有自动传值效果。

    应用:

    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('<id:%s ip:%s port:%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()
    
    
    
    # obj1=MySql('1.1.1.1',3306)
    # obj1.tell_info()
    obj2 = MySql.from_conf()
    obj2.tell_info()

    产生对象的名称空间:

    class Student:
        def __init__(self, stu_name, sex):
            self.name = stu_name
            self.sex = sex  # 通常建议参数名与新增的属性名同名
    
    stu = Student('Bob', 'male')  # 实例化对象
    print(stu.name, stu.sex)
    
    '''
    # __init__方法会在实例化对象时被调用
    # 1.会为实例化的对象形成空的名称空间
    # 2.就是一个方法,可以被传参,在 类名(实参) 这种方式下调用并传参 __init__(self, 形参)
    # 3.第一个self就是要产生的当前对象
    # 重点:在方法内部,形参拿到了实参值,利用self.属性名 = 形参 = 实参值,对对象的名称空间添加属性
  • 相关阅读:
    函数指针的调用方式
    C++构造函数和析构函数顺序
    往android主项目中添加辅助项目
    Qt每次运行都是重新编译问题
    函数参数检验的研究
    动态链接库和静态链接库的区别(未完待续)
    MySQL 查看最大连接数, 当期连接数.
    Linux 命令
    Ext treelist 动态切换TreeStore
    Java 日期加减计算.
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/10750885.html
Copyright © 2011-2022 走看看