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

# 类中定义的函数有两大类(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

 

转载于:https://www.cnblogs.com/yspass/p/9581743.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值