介绍
'''
在类内部定义的函数,分为两大类
一:绑定方法 :绑定给谁,就应该由谁来调用,谁来调用就会把调用者当作第一个参数自动传入
绑定到对象的方法:在类内定义的没有被任何装饰器修饰的
绑定到类的方法:在类内定义的没有被装饰器classmethod修饰的方法
二:非绑定方法:没有自动传值这么一说了,就类中定义的一个普通工具,对象和类都可以使用
非绑定方法:不与类或者对象绑定
'''
class Foo:
def __init__(self,name):
self.name=name
def tell(self):
print('名字是%s'%self.name)
@classmethod
def func(cls): #cls=Foo
print(cls)
@staticmethod
def func(x,y): #cls=Foo
print( x+y)
f=Foo('egon')
# print(Foo.tell)
# Foo.tell(f)
# print(f.tell)
# print(Foo.func)
# print(Foo.func1)
# print(f.func1)
Foo.func(1,2)
f.func(1,3)
应用
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',19,'male')
#绑定给对象,就应该由对象来调用,自动将对象本身当作第一个参数传入
# p.tell_info()
#绑定给类,就应该由类来调用,自动将类本身当作第一个参数传入
# p=People.from_conf()
# p.tell_info()
#非绑定方法。不与类或对象绑定,谁都可以调用,没有自动传值一说
p1=People('egon1',11,'male')
p2=People('egon2',11,'male')
p3=People('egon3',11,'male')
print(p1.id)
print(p2.id)
print(p3.id)