0

I want to create a python library and part of the function of this library involves creating a class instance with some user defined variables. How do I let the user write their own conditionals for the class instance in said instance's method? For example, say I have an instance of the following class:

class Test:
    def __init__(self, some_value):
        self.some_value = some_value
    def func(self):
        pass

instance = Test(4)

How do I let a user change what instance.func() does (how can I let a user access the object's variables?

1 Answer 1

1

You could pass a reference to the user's function to init For example:

class Test:
    def __init__(self, user_function):
        self._function = user_function
    def func(self):
        return self._function()

def ufunc_1():
    return 'Hello world!'

def ufunc_2():
    return 'Goodbye cruel world'


t_1 = Test(ufunc_1)
t_2 = Test(ufunc_2)

print(t_1.func())
print(t_2.func())

In this way, the reference to the user function is stored in an instance variable.

Output:

Hello world!
Goodbye cruel world
Sign up to request clarification or add additional context in comments.

3 Comments

This works for me thank you. Are there any downsides to passing a non-local function to init (in the context of a public python library)?
Also, can the user-created functions access an instances variables?
@okayatcp12 The functions ufunc_1 and ufunc_2 could access instance variables of the Test class merely by passing a reference to the appropriate instance as a parameter

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.