zoukankan      html  css  js  c++  java
  • 面对对象-绑定方法与非绑定方法

    在类内部定义的函数,分为两大类:
    一:绑定方法:绑定给谁,就应该由谁来调用,谁来调用就会把调用者当做第一个参数自动传入
    绑定到对象的方法:在类内定义的没有被任何装饰器来修饰的

    邦定到类的方法:在类内定义的被装饰器classmethod修饰的方法

    二:非绑定方法:没有自动传值一说了,就是类中的普通工具
    非绑定方法:不与类或者对象绑定 staticmethon

    class Foo:
        def __init__(self,name):
            self.name=name
    
        def tell(self):  # 绑定到对象
            print('名字是 %s'%self.name)
    
        @classmethod  # 绑定到类(类方法)
        def func(cls):  #cls=F00
            print(cls)
    
        @staticmethod  #(静态方法)普通函数,类与对象都能用
        def func1(x,y):
            print(x+y)
    
    f=Foo('egon')
    f.tell()  # ---> 名字是 egon
    Foo.func()
    
    Foo.func1(1,2)
    f.func1(2,3)

    绑定方法与非绑定方法的应用

      

    import settings
    import hashlib
    import time
    class Pepole:
        def __init__(self,name,age,sex):
            self.id=self.create_id()
            self.name=name
            self.age=age
            self.sex=sex
    
        def tell_info(self):
            print("Name:%s Age:%s Sex:%s"%(self.name,self.age,self.sex))
    
        @classmethod
        def from_conf(cls):
            obj=cls(
                settings.name,
                settings.age,
                settings.sex
            )
            return obj
    
        def create_id(self):
            m=hashlib.md5(str(time.time()).encode('utf-8'))
            return m.hexdigest()
    
    # p=Pepole('egon',18,'male')
    #绑定给对象,就应该由对象来调用,自动将对象本身当做第一个参数传入
    # p.tell_info()
    
    #绑定给类,就应该由类来调用,自动将类本身当做第一参数传入
    # p=Pepole.from_conf() # 从配置文件中传入的文件
    # p.tell_info()
    p1=Pepole('egon1',18,'male')
    p2=Pepole('egon2',28,'male')
    p3=Pepole('egon3',38,'male')
    
    print(p1.id)
    print(p2.id)
    print(p3.id)
  • 相关阅读:
    python字符串的第一个字符和最后字符
    python str和repr的区别
    python list tuple知识点
    python list append 相关知识点
    python dict remove,删除
    python windows和linux下安装和配置
    python 集合的相关操作
    python list 合并连接字符串
    python中文视频教程
    小程序授权登录
  • 原文地址:https://www.cnblogs.com/hexiaorui123/p/10201473.html
Copyright © 2011-2022 走看看