7

I am pretty new to Python world and trying to learn it.

This is what I am trying to achieve: I want to create a Car class, its constructor checks for the input to set the object carName as the input. I try to do this by using the java logic but I seem to fail :)

class Car():
    carName = "" #how can I define a non assigned variable anyway like "String carName;" in java
    def __self__(self,input):
        self.carName = input

    def showName():
        print carName

a = Car("bmw")
a.showName()
2
  • 1
    What book are you using to teach yourself Python? Where did you see code like this? Did you read a web site? If so, which one? Commented Jul 22, 2009 at 10:29
  • I think what you meant is init instead of self. Commented Jul 22, 2009 at 12:29

3 Answers 3

14

derived from object for new-style class
use __init__ to initialize the new instance, not __self__
__main__ is helpful too.

class Car(object):
    def __init__(self,input):
        self.carName = input

    def showName(self):
        print self.carName
def main():
    a = Car("bmw")
    a.showName()
if __name__ == "__main__":
    main()
Sign up to request clarification or add additional context in comments.

Comments

2

You don't define a variable, and you use init and self. Like this:

class Car(Object):
    def __init__(self,input):
        self.carName = input

    def showName(self):
        print self.carName

a = Car("bmw")
a.showName()

Comments

1

this is not correct!

class Car():
    carName = "" #how can I define a non assigned variable anyway like "String carName;" in java
    def __self__(self,input):
        self.carName = input

the first carName is a class Variable like static member in c++

the second carName (self.carName) is an instance variable, if you want to set the class variable with the constructor you have to do it like this:

class Car():
    carName = "" #how can I define a non assigned variable anyway like "String carName;" in java
    def __self__(self,input):
        Car.carName = input

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.