python基础--面向对象之绑定非绑定方法

Posted cong12586

tags:

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

# 类中定义的函数分为两大类,
#一,绑定方法(绑定给谁,谁来调用就自动将它本身当做第一个参数传入)
#   1,绑定到类的方法:用classmethod装饰器装饰的方法。
#       对象也可以掉用,仍将类作为第一个参数传入
#   2,绑定到对象的方法:没有被任何装饰器装饰的方法
#       注意,此时如果类调用对象方法,不会自动传值,需要自己手动传入
#       对象本身。
#   类只有一个,因此对象掉用类方法会自动传值,对象可以有很多个,类调用对象方法
#   时需要传入对象值
class A:
    @classmethod
    def tell_class(cls):
        # 一般绑定到类的方法这样写,不写self,写cls
        print(cls)
    def tell_obj(self):
        print(self)
a = A()
a.tell_class()
a.tell_obj()
A.tell_class()
A.tell_obj(a)
# 二,非绑定方法,用staticmethod装饰器装饰的方法
#   1,不与类和对象绑定,类和对象都可以调用,但是就不会自动传值了
#       就相当于一个普通的函数
#   注意:没有装饰器装饰的方法为绑定到对象的方法
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> #查看结果为普通函数

 

以上是关于python基础--面向对象之绑定非绑定方法的主要内容,如果未能解决你的问题,请参考以下文章

Python学习——02-Python基础——8-面向对象的程序设计——封装绑定方法与非绑定方

python面向对象(绑定方法与非绑定方法)

18-面向对象之基础

python-面向对象(绑定方法与非绑定方法)

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

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