class ClassMethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
"""
类来调用,instance为None,owner为类本身。
实例来调用,instance为实例,owner为类本身。
:param instance:
:param owner:
:return:
"""
def feedback(*args, **kwargs):
return self.func(owner, *args, **kwargs)
return feedback
class People:
name = 'edward'
@ClassMethod
def say_hi(cls, msg):
print(f'你好{cls.name},{msg}')
People.say_hi('你好帅')
class StaticMethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
def feedback(*args, **kwargs):
return self.func(*args, **kwargs)
return feedback
class People:
name = 'edward'
@StaticMethod
def say_hi(x, y, z): # say_hi = StaticMethod(say_hi)
print('------>', x, y, z)
People.say_hi(1, 2, 3)