三.绑定方法与非绑定方法

Posted yspass

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三.绑定方法与非绑定方法相关的知识,希望对你有一定的参考价值。

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

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


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

  

 1 class Foo:
 2     def func1(self):
 3         print(绑定给对象的方法, self)
 4 
 5     @classmethod
 6     def func2(cls):
 7         print(绑定给类的方法, cls)
 8 
 9     @staticmethod
10     def func3(x, y, z):
11         print(普通函数)
12 
13 
14 obj = Foo()
15 obj.func1()  # 绑定给对象的方法 <__main__.Foo object at 0x0000000000B42BE0>
16 
17 Foo.func2()  # 绑定给类的方法 <class ‘__main__.Foo‘>
18 
19 obj.func3(1, 2, 3)  # 普通函数
20 Foo.func3(1, 2, 3)  # 普通函数
21 
22 # case
23 import setting
24 
25 
26 class mysql:
27     def __init__(self, ip, port):
28         self.id = self.create_id()
29         self.ip = ip
30         self.port = port
31 
32     def tell_info(self):
33         print(%s:%s:%s % (self.id, self.ip, self.port))
34 
35     @classmethod
36     def from_conf(cls):
37         return cls(setting.ip, setting.port)
38 
39     @staticmethod
40     def create_id():
41         import uuid
42         return uuid.uuid4()
43 
44 
45 obj = Mysql.from_conf()
46 obj.tell_info()  # 04fd823a-0f04-400b-bf64-6545760d6490:192.168.1.1:3306

 

以上是关于三.绑定方法与非绑定方法的主要内容,如果未能解决你的问题,请参考以下文章

面向对象之绑定方法与非绑定方法

面向对象:多态(多态性)封装(隐藏属性)绑定方法与非绑定方法

Mixins多态绑定方法与非绑定方法

2020Python修炼记面向对象编程——绑定方法与非绑定方法

09-05 绑定方法与非绑定方法

绑定方法与非绑定方法