python 綁定方法

一.綁定方法與非綁定方法python

1.綁定方法
'''
   綁定方法:綁定給誰就是給誰用的

    1.凡是類中的方法和函數,都是綁定給對象使用的;ide

    2.綁定方法都有自動傳值的功能。傳遞進去的值,就是對象自己。函數

    3.若是類想調用綁定方法,就必須遵循函數的參數規則,有幾個參數,就必須傳遞幾個參數。工具

綁定到對象的方法:
定義:凡是在類中定義的函數(沒有被任何裝飾器修飾),都是綁定給對象的,
給誰用:給對象用
特色:obj.bar() 自動把obj當作第一個參數傳入,由於bar中的邏輯就是要處理obj
綁定到類的方法:
定義:在類中定義的,被@classmethod裝飾的函數就是綁定到類的方法
給誰用:給類用
特色:類.class_method() 自動把類當作第一個參數傳入,由於class_method中的邏輯就是要處理類
'''
class People:
    def __init__(self,name):
        self.name=name
    def bar(self):
        print('--->',self.name)

    @classmethod
    def func(cls):          --------->綁定類的方法,默認爲cls
        print(cls)
f=People('egon')
# print(People.func)       ####綁定給類
# print(f.bar)      ####綁定給對象的

# People.func()

# f.func()
View Code
#####綁定類的方法

class MySQL:
    def __init__(self,ip,port):
        self.ip=ip
        self.port=port

    @classmethod       ---->綁定到類的方法方便咱們直接產生MYSQL對象,以
    def from_conf(cls):   #便於咱們設置相應的條件來控制
        import settings    ##settings.py文件裏存放IP與地址
        obj=cls(settings.ip,settings.port) #obj=MySQL('1.1.1.1',8080)
        obj.x=111111111111111111111111111111111
        return obj

# m=MySQL('127.0.0.1',8080)

obj=MySQL.from_conf()

print(obj.ip)
print(obj.port)
print(obj.x)
View Code

 

  2.非綁定方法spa

  非綁定方法就是一個函數,就是一個工具而已,不須要類,也不須要對象,沒有自動傳值這麼一說.3d

  在面向對象中實現,就是 @staticmethodcode

import hashlib
import time
import pickle
import os
student_path=r'C:\Users\Administrator\PycharmProjects\python5期\day22\student'

class People:
    def __init__(self,name,sex,user_id):
        self.name=name
        self.sex=sex
        self.user_id=user_id
        self.id = self.create_id()

    def tell_info(self):
        print('''
        --------%s info--------
        id:%s
        name:%s
        sex:%s
        user_id:%s
        ''' %(self.name,self.id,self.name,self.sex,self.user_id))

    def create_id(self):
        m=hashlib.md5()
        m.update(self.name.encode('utf-8'))
        m.update(self.sex.encode('utf-8'))
        m.update(str(self.user_id).encode('utf-8'))
        return m.hexdigest()

    def save(self):
        with open(self.id,'wb') as f:
            pickle.dump(self,f)

    @staticmethod   #非綁定方法,就是一個函數,就是一個工具而已,不須要類,也不需對象
    def get_all():
        res = os.listdir(student_path)
        for item in res:
            file_path=r'%s\%s' %(student_path,item)
            with open(file_path,'rb') as f:
                obj=pickle.load(f)
                obj.tell_info()


# print(People.get_all)
#
# p=People('egon','male',123123123)
# print(p.get_all)
View Code
相關文章
相關標籤/搜索