使Python模块类能够从一个单独的类中调用

时间:2017-07-17 19:58:41

标签: python class methods module

我目前有一个模块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

中的类的情况下执行此操作

1 个答案:

答案 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