【发布时间】:2020-06-02 19:54:34
【问题描述】:
我正在使用 Python3,并且我有一个非常重的类,其中包含许多函数作为属性:
Class A (object):
def __init__(self):
...
def method1(self):
...
def method2(self):
...
...
def methodN(self):
...
例如,我想创建一个只有 method1 的类 A 的实例。我怎么能这样做?
使用继承,虽然它可能是技术上最正确的方法,但在我的情况下不是一个选择 - 我不能对代码库进行太多修改。
我想过在调用__init__ 之前装饰类并删除它的属性,但我什至不知道从哪里开始解决这个问题。有什么想法吗?
【问题讨论】:
-
你为什么要这样做?
-
@kaya3 我想这样做是因为原来的类很重,里面有这么多的函数。它的使用方式运行良好,但是出现了一个新的用例,我们需要从另一个端点调用它,只需要使用它的一个或两个方法(这些方法每次都会不同并指定为参数) .
-
您是否觉得创建实例时方法会被复制到实例中?事实并非如此。
-
您的意思是
class A的实例有一百个方法会占用与class B的实例只有一个方法(所有方法相同)一样多的内存吗?跨度> -
是的,完全正确。两者都只是引用了他们的
__class__属性,并在上面查找方法。您可以使用sys.getsizeof进行测试。
标签: python python-3.x python-decorators