我试图找出,将方法定义从类定义移动到不同文件时有哪些选项
示例:我有一个类,其方法返回同一类的新实例:
from __future__ import annotations
class C1:
def __init__(self, val):
self.val = val
def added_to_val(self, to_add: float) -> C1:
"""Return new instance of class C1, with incremented value."""
return C1(self.val + to_add)
instA = C1(25)
instB = instA.added_to_val(2)
instB.val #27
现在我想将added_to_val
移动到另一个文件(因为它实际上是一个长函数,而且很难读取),但这不起作用
以下是我所做的:
# file classdef.py
from __future__ import annotations
from .methoddef import _added_to_val
class C2:
def __init__(self, val):
self.val = val
added_to_val = _added_to_val
# file methoddef.py
from .classdef import C2
def _added_to_val(instance: C2, to_add: float) -> C2:
"""Return new instance of class C2, with incremented value."""
return C2(instance.val + to_add)
然而,这给出了一个ImportError: cannot import name '_added_to_val' from partially initialized module 'methoddef' (most likely due to a circular import)
有没有办法解决这个问题?或者返回同一类实例的类方法必须始终位于同一文件中吗
您可以概括该方法:
然后像这样使用它:
警告:我还没有对此进行测试,特别是第一个代码段中的类型注释可能是错误的。我也希望我命名的功能更好,但它应该工作
相关问题 更多 >
编程相关推荐