VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 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> #查看结果为普通函数
复制代码

 

来源:https://www.cnblogs.com/cong12586/p/11366535.html


相关教程