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

Posted hexiaorui123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面对对象-绑定方法与非绑定方法相关的知识,希望对你有一定的参考价值。

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

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

 










以上是关于面对对象-绑定方法与非绑定方法的主要内容,如果未能解决你的问题,请参考以下文章

6月6日 面对对象复习

2020Python修炼记面向对象编程——绑定方法与非绑定方法

python-面向对象(绑定方法与非绑定方法)

面向对象——绑定方法与非绑定方法

面向对象编程(类的绑定方法与非绑定方法)

python面向对象(绑定方法与非绑定方法)