views:

438

answers:

3

Hello, 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()
+9  A: 

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
working, thank you :)
@Crib, You are welcome:)
sunqiang
Plus, you should be deriving from object:class Car(object): ...
hughdbrown
@hughbrown, thanks! let me fix it.
sunqiang
+1  A: 

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
A: 

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
vlad