6

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()
  • 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? – S.Lott Jul 22 '09 at 10:29
  • I think what you meant is __init__ instead of __self__. – riza Jul 22 '09 at 12:29

3 Answers3

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()
sunqiang
  • 6,422
  • 1
  • 32
  • 32
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()
MrHus
  • 32,888
  • 6
  • 31
  • 31
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