tags:

views:

90

answers:

4

Hello,

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.

+6  A: 

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.

SilentGhost
@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)
chrissygormley
@chriss: I didn't suggest to use `test()`, I suggested to use `test(var)`
SilentGhost
@SilentGhost -- That says that the global `var` is not defined when I do that.
chrissygormley
@chriss: well, why is it not defined? where does come from in your code?
SilentGhost
@SilentGhost -- 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.
chrissygormley
A: 
class test():
    def __init__(self, var):
        self._var = var

    def value(self):
        print self._var
Tuomas Pelkonen
A: 

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.

MikeyB
that's completely unnecessary.
SilentGhost
Yes, totally unnecessary, but given his code, this is what I *think* he was asking.
MikeyB
A: 

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()
chnet