gpt4 book ai didi

python:这是为类方法和方法使用相同函数名的好方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:51 25 4
gpt4 key购买 nike

class A(object):

@classmethod
def print(cls):
print 'A'

def __print(self):
print 'B'

def __init__(self):
self.print = self.__print


a = A()
a.print()
A.print()

我觉得太丑了,有没有其他方法可以实现同样的功能?不要说combinemethod,因为它每次都会创建一个对象。

最佳答案

最简单的解决方案是创建一个像 classmethod 这样的描述符装饰器,但同时也将实例传递给方法:

from functools import partial
class descriptormethod(object):
def __init__(self, fn):
self.fn = fn
def __get__(self, instance, owner):
return partial(self.fn, instance, owner)

class A(object):
@descriptormethod
def print_(self, cls):
print 'A' if self is None else 'B'

不用担心描述符或部分对象的开销;这与您正常调用实例或类方法时发生的情况没有什么不同。

关于python:这是为类方法和方法使用相同函数名的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com