26 绑定方法与非绑定方法
Posted ouyang99-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
以上是关于26 绑定方法与非绑定方法的主要内容,如果未能解决你的问题,请参考以下文章
2020Python修炼记面向对象编程——绑定方法与非绑定方法