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)
     
  • 相关阅读:
    hdu
    如何在maven中的项目使用tomcat插件
    Intellij IDEA 像eclipse那样给maven添加依赖,且Intellij idea里在pom.xml里添加Maven依赖,本地仓库下拉列表显示包很少的血的经验
    DataTables warning: table id=costitemProject
    Navicat Premium Mac 12 破解
    mac显示隐藏的文件
    tomcat7下载地址
    mac同时安装jdk7和jdk8
    屏蔽datatable错误提示
    mac上配置java jdk环境
  • 原文地址:https://www.cnblogs.com/sunny666/p/9661338.html
Copyright © 2011-2022 走看看