0

I am trying to pass a variable from a function to a class. Example code is below:

def hello(var):

    return var

class test():
    def __init__(self):
        pass

    def value(self):
        print var

hello(var)
test = test()
test.value()

I would like to pass var into the class test().

Thanks for any help.

1

4 Answers 4

7

You need to modify your class like this:

class test():
    def __init__(self, var):
        self.var = var

    def value(self):
        print self.var

test_inst = test(var)
test_inst.value()

Also, you cannot use the same exact name to refer to both class instance and a class itself.

Sign up to request clarification or add additional context in comments.

5 Comments

@SilentGhost -- I used this code but I got the error -- Traceback (most recent call last): File "function_pass.py", line 41, in <module> test_inst = test() TypeError: __init__() takes exactly 2 arguments (1 given)
@chriss: I didn't suggest to use test(), I suggested to use test(var)
That says that the global var is not defined when I do that.
@chriss: well, why is it not defined? where does come from in your code?
I can define it. And it works. It's when I pass it in via the command line the problem starts. It won't accept it then. Thanks for the help.
0
class test():
    def __init__(self, var):
        self._var = var

    def value(self):
        print self._var

Comments

0

Add the statement:

global var

to your code:

>>> global var
>>> def hello():
       print var

>>> class test():
       def __init__(self):
           pass

       def value(self):
           print var

>>> var = 15
>>> hello()
15
>>> test().value()
15

Cue standard disclaimer regarding global variables are bad... but this is how you do it.

2 Comments

that's completely unnecessary.
Yes, totally unnecessary, but given his code, this is what I think he was asking.
0

I think you can call hello function in class's function.

def hello (var):
    return var

class test():
    def __init__(self):
        pass

    def value(self):
        var = hello(5)
        print var

test = test()
test.value()

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.