zoukankan      html  css  js  c++  java
  • 9绑定方法与非绑定方法

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

    绑定到类发方法:在类内定义的没有被装饰器classmethod修饰的方法

    二:非绑定方法:没有自动传值这么一说,就类中定义一个普通函数,对象和类都可以使用
    非绑定方法:不与类或者对象绑定

    '''

    class Foo:
    def __init__(self,name):
    self.name=name

    def tell(self):
    print('名字是%s'%self.name)

    @classmethod
    def func(cls):
    print(cls)

    @staticmethod #对象和类都可以使用
    def func1(x,y):
    print(x+y)



    f=Foo('egon')
    #
    # #print(f.tell)
    # print(Foo.func)
    # Foo.func()

    Foo.func1(1,2) #加classmethod绑定到类,用类调用
    f.func1(1,5)

    应用:
    import settings
    import hashlib
    import time
    class People:
    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

    @staticmethod #非绑定方法
    def create_id():
    m=hashlib.md5(str(time.time()).encode('utf-8'))
    return m.hexdigest()
    #p=People('EGON',18,'male')
    #绑定给对象,就应该由对象来调用,自动将对象本身作为第一个个参数传入
    #p.tell_info()


    #绑定给类,就应该由对象来调用,自动将对象本身做第一个参数传入
    # p=People.from_conf()
    # p.tell_info()

    #非绑定方法,不与类或者对象绑定,谁都可以调用,没有自动传值一说

    p1=People('egon',18,"male")
    p2=People('egon',28,"male")
    p3=People('egon',38,"male")
    print(p1.id)
    print(p2.id)
    print(p3.id)
     
  • 相关阅读:
    Listener:监听器
    go语言基础数据类型
    Envoy基于文件系统的RDS动态配置
    git常用操作
    c语言 assert(转)
    浅谈可重入函数与不可重入函数【转】
    静态全局变量和全局变量的区别(转)
    c语言 排序(转)
    c语言刷 队列题记录
    c语言刷 链表题记录
  • 原文地址:https://www.cnblogs.com/sunny666/p/9661338.html
Copyright © 2011-2022 走看看