1

I have something like this:

class updateMyNumber:
    def __init__(self, number):
        self.number = update_number(number)

    def update_number(self, number):
        self.number = number * 2

inst = updateMyNumber(5)

I get the following error:

NameErrorTraceback (most recent call last) in () ----> 1 inst = updateMyNumber(5)

in init(self, number) 1 class updateMyNumber: 2 def init(self, number): ----> 3 self.number = update_number(number) 4 5 def update_number(self, number):

NameError: name 'update_number' is not defined

I want the inst to return 25. What's the best way to define the class?

Note: I don't want to write self.number = number * 2

1
  • "Note: I don't want to write self.number = number * 2" Then use another language. The explicit self is here to stay in Python. I suppose you could refactor all your code to use closures and nested scopes for simulating classes, if you really wanted to. I would suggest just using the language constructs as they were intended, though. Commented Jul 31, 2018 at 7:51

1 Answer 1

6

you should call the self method:

class updateMyNumber:
    def __init__(self, number):
        self.update_number(number)

    def update_number(self, number):
        self.number = number * 2

but better way to setting instance variables inside __init__, read the should-all-member-variables-be-initialized-in-init

so i recomend you, something:

class updateMyNumber:
    def __init__(self, number):
        self.number = self.update_number(number)

    def update_number(self, number):
        return number * 2
Sign up to request clarification or add additional context in comments.

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.