Chidananda Nayak
Chidananda Nayak

Reputation: 265

Python Class related error?

I have defined a simple class.

class Person:

    age = 0
    name = ''


    def __init__(self,personAge,personName):
        self.age = personAge
        self.name= personName

        def __str__(self):
            return self.name


d = Person(24,'ram')
print(d)

so o/p is coming like this <__main__.Person object at 0x0000020256652CF8> .But i want o/p like this ram. How can i get this?

please be correcting me.Thnaks in adavance

Upvotes: 0

Views: 43

Answers (3)

Abhishake Gupta
Abhishake Gupta

Reputation: 3170

    class Person:
         age = 0
         name = '' 

        def __init__(self, personAge, personName): 
              self.age = personAge
              self.name= personName 

        def __str__(self): 
               return self.name 

d = Person(24,'ram') 
print(d)

__str__ should be out of __init__ scope

Upvotes: 1

Mika72
Mika72

Reputation: 411

You are printing the class object, not return value of the method (see last line here). Possible indentation issue for __str__() method fixed, too.

class Person:

    age = 0
    name = ''


    def __init__(self,personAge,personName):
        self.age = personAge
        self.name= personName

    def __str__(self):
        return self.name


d = Person(24,'ram')
print(d.__str__())

See also PEP 8 for naming conventions.

Upvotes: 1

Prakash Palnati
Prakash Palnati

Reputation: 3419

your indentation is wrong. Your overrided str inside init (constructor). Also you don't have to specify class variables if you are getting/initialising the variables through constrcutor. try below, `

class Person:

    def __init__(self,personAge,personName):
        self.age = personAge
        self.name= personName

    def __str__(self):
        return self.name


d = Person(24,'ram')
print(d)

`

Upvotes: 4

Related Questions