Help with basic Python

palladium

Senior member
Dec 24, 2007
539
2
81
Just started learning programming a few weeks ago. Tried running the following python code but it returned an error : TypeError: altered() missing 1 required positional argument: 'self'.

Code:
class Parent(object):
       def altered (self):
          print("Parent altered")

class Child(Parent):

    def altered(self):
                                                                                                         
           print("Child, before parent altered")  
           super(Child,self).altered()
           print("Child, after parent altered")

Parent.altered()
Child.altered()

But if I declare the classes as variables it worked out nicely, like so:

Code:
class Parent(object):
       def altered (self):
          print("Parent altered")

class Child(Parent):

    def altered(self):
                                                                                                         
           print("Child, before parent altered")  
           super(Child,self).altered()
           print("Child, after parent altered")

a = Parent()
b = Child()

a.altered()
b.altered()

Would appreciate some explanation why this is the case.

Thanks

Credits to Learn Python 3 the Hard Way by Zed Shaw for the code.
 

Ajay

Lifer
Jan 8, 2001
16,094
8,111
136
Well, aside for the fact that I hate Python, I have one observation. In the second code snippet, you actually instantiate the objects Parent() and Child(); whereas you do not do so explicitly in the first example. That said, I'm not familar with the implicit behavoir of the interpreter.
 

njdevilsfan87

Platinum Member
Apr 19, 2007
2,341
264
126
You can use a @classmethod decorator:

Code:
class Parent(object):
 
    @classmethod
    def altered(cls):
        print("Parent altered")

class Child(Parent):
 
    @classmethod
    def altered(cls):
        print("Child, before parent altered")
        super(Child, cls).altered()
        print("Child, after parent altered")
        
Parent.altered()
Child.altered()

Explanation: https://www.programiz.com/python-programming/methods/built-in/classmethod

My suggestion for a new programmer would be to read it, understand it, and then forget about this decorator until you become familiar with an object's capabilities using purely static methods, as well as some magic methods.
 
Last edited:

Andy T

Senior member
Jul 24, 2008
215
1
81
"self" is a reference to the current instance of a class. In your first snippet, since you didn't create any instances, self would be null/empty. Second instance is the better way to use, HOWEVER, you didn't "declare" your "initialized" variables "a" and "b" by allocating memory to them, etc... Keep that very important distinction in mind.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |