zoukankan      html  css  js  c++  java
  • 26 绑定方法与非绑定方法

    一: 绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入
     1. 绑定给对象的方法: 类中定义的函数默认就是绑定给对象的
     2. 绑定给类的方法: 为类中定义的函数加上一个装饰器classmethod 

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

    class Foo:
       def f1(self):
         print(self)
    
       @classmethod
       def f2(cls):
         print(cls)
    
       @staticmethod
       def f3(x,y):
         print('f3',x+y)
    
    
     obj=Foo()
     print(Foo.f2)
     Foo.f2()
     print(obj.f2)
     obj.f2()
    
     print(Foo.f3)
     print(obj.f3)
    
     Foo.f3(1,2)
     obj.f3(3,4)
    # 应用
    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()
  • 相关阅读:
    QPushButton设置背景图片,设置背景透明度
    QMessageBox 弹窗提示总结
    Qt中 QObject * sender() const的用法
    Java获取文件后缀
    Qt QLabel设置背景色
    Qt 设置程序图标
    程序猿 tensorflow 入门开发及人工智能实战
    Github + Hexo 搭建博客
    Linux常用命令
    深度学习路线记录
  • 原文地址:https://www.cnblogs.com/ouyang99-/p/10415317.html
Copyright © 2011-2022 走看看