我目前有一个模块my_module
,其中包含classes.py
:
from . import config
class Class1:
@staticmethod
def method_one(x)
return x + config.constant
@staticmethod
def method_two(y)
return x - config.constant
我的问题是我希望能够为config.constant
提供具有不同值的模块的多个实例。理想情况下,我有一个名为MyClass
的新类,其中常量将是一个实例变量,因此这将起作用:
instance1 = MyClass(5)
instance1.Class1.method_one(5) # 10
instance2 = MyClass(0)
instance2.Class1.method_one(5) # 5
有没有办法在不修改my_module
?
答案 0 :(得分:0)
使其成为一种静态方法。
class MyClass(object):
@staticmethod
def my_method(num):
return num + num
然后您可以通过其他文件使用它(假设文件为my_module.py
:
import my_module
my_module.MyClass.my_method(2)
>>>4
my_module.py
def __init__(self, constant):
self.constant = constant
def my_method(self, num):
return self.constant + num
some_other_file.py
import my_module
MyClass = type('MyClass', (), my_module.__dict__)
my_instance = MyClass(3)
my_instance.my_method(4)
>>> 7