代码先锋网 代码片段及技术文章聚合

python 类中绑定方法与非绑定方法的原理和基础案例

绑定给类的方法(classmethod)

#set.py  # 一个py文件内储存了key值
key = '123'

#test.py  # 运行py
import set
class My:
    def __init__(self,key):
        self.key = key

    @classmethod  # 把内部方法绑定给 类,该方法默认参数是绑定的类
    def conf(cls):
        return cls(set.key)

print(My.from_conf) #<bound method MySQL.from_conf of <class '__main__.MySQL'>>
conn=My.from_conf()

conn.from_conf() #对象也可以调用,但是默认传的第一个参数仍然是类

非绑定方法(staticmethod)

import hashlib
import time
class MySQL:
    def __init__(self,host,port):
        self.id=self.create_id()
        self.host=host
        self.port=port
    @staticmethod
    def create_id(): #就是一个普通工具
        m=hashlib.md5(str(time.time()).encode('utf-8'))
        return m.hexdigest()


print(MySQL.create_id) #<function MySQL.create_id at 0x0000000001E6B9D8> #查看结果为普通函数
conn=MySQL('127.0.0.1',3306)
print(conn.create_id) #<function MySQL.create_id at 0x00000000026FB9D8> #查看结果为普通函数

版权声明:本文为weixin_42329277原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42329277/article/details/80516474

智能推荐

Python 绑定方法与非绑定方法(day_030)

1. 绑定方法:特殊之处在于将调用者本身当做第一个参数自动传入 1.2 绑定给对象的方法:调用者是对象,自动传入的是对象 1.2 绑定给类的方法:调用者类,自动传入的是类 2. 非绑定方法→静态方法 没有绑定给任何人:调用者可以是类、对象,没有自动传参的效果...

Python-3 绑定方法与非绑定方法

一、绑定方法:绑定给谁,就应该由谁来调用,谁来调用就会把调用者当作第一个参数自动传入。 绑定到对象的方法:在类内定义的没有被任何装饰器修饰的。 绑定到类的方法:在类内定义的被装饰器classmethod修饰的方法。 二、非绑定方法:没有自动传值这么一说了,就类中定义的一个普通工具,对象和类都可以使用。 非绑定方法:不与类或者对象绑定。 对象方法:不需要装饰器;需要绑定方法。 类方法:需要装饰器cl...

Python知识——多态、绑定方法与非绑定方法

Python知识 多态 什么是多态? 多态性 鸭子类型 绑定方法与非绑定方法 绑定方法 1、绑定给对象的方法 2、绑定给类的方法 非绑定方法 总结 多态 什么是多态? 同一事物多种形态 多态性 多态性指的是可以在不用考虑对象具体类型的情况下而直接使用对象,这就需要在设计时,把对象的使用方法统一成一种 类似len( )方法,我们可以在不考虑三者类型的情况下直接使用统计三个对象的长度。 鸭子类型 但其...

python面向对象,绑定方法与非绑定方法

绑定方法与非绑定方法 绑定给对象的方法 绑定给类的方法 非绑定方法(静态方法)...

猜你喜欢

python对象属性查找(.)的工作方式&&绑定方法与非绑定方法

前言 python在调用类函数时其对象属性查找 ‘.’ 与进行函数调用 ‘()’ 是两个过程: a=class.method() 等价于: a=class.method; a=a() 那么python属性查找是一个怎样的过程呢? 分析 先了解一下dir()函数: dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参...

Python基础教程:绑定方法和非绑定详细用法

绑定和方法调用 1、首先,方法仅仅是类内部定义的函数。(这意味着方法是类属性而不是实例属性) 2、其次,方法只有在其所属的类拥有实例时,才能被调用。当存在一个实例时,方法才被认为是绑定到那个实例了。没有实例时方法就是未绑定的 3、最后,任何一个方法定义中的第一个参数都是变量 self,它表示调用此方法的实例对象 核心笔记:self 是什么? 1、self 变量用于在类实例方法中引用方法所绑定的实例...

Python中类的方法属性与方法属性的动态绑定

最近在学习python,纯粹是自己的兴趣爱好,然而并没有系统地看python编程书籍,觉得上面描述过于繁琐,在网站找了一些学习的网站,发现廖雪峰老师的网站上面的学习资源很不错,而且言简意赅,提取了一些python中的重要的语法和案例。重要的是可以在线测试python的运行代码,缺点就是没有系统的看python的书籍,不能及时的将知识的碎片化联系在一起,这也是看书与不看书的区别。尤其是在python...

Set集合元素的唯一性

HashSet实现 Set<E>接口,所以HashSet保证元素唯一性的做法与Set的做法一致,下面用HashSet为例子来说明Set集合是如何确保元素的唯一性的。   输出的结果为:[1, 2, 3] 从上面这段代码可以看到,这里往Integer类型的HashSet里面添加了四个值,其中两个值是相同的,而这个相同的值只有一个成功的添加了进去。不难发现,HashSe...

抽象装饰者模式

好记性不如赖笔头…… 抽象装饰者模式比之装饰模式多了更大的扩展空间, 装饰模式在IO中大量使用。...