码迷,mamicode.com
首页 > 其他好文 > 详细

面对对象-绑定方法与非绑定方法

时间:2018-12-31 11:26:10      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:面对对象   绑定   digest   settings   参数   对象   eth   encode   color   

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

邦定到类的方法:在类内定义的被装饰器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)

 

面对对象-绑定方法与非绑定方法

标签:面对对象   绑定   digest   settings   参数   对象   eth   encode   color   

原文地址:https://www.cnblogs.com/hexiaorui123/p/10201473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!