What you are doing is called
Overrriding, what this means is that you can create a function with the same
namespace as another function and when that
name is called the new function will be called.
It also begs to mention that
Overridning at the class level is only in the class scope, you CAN override any function at any scope and if you do it unintentionally you will cause bugs.
On to your issue.
def calculate_wage(self, hours)
return hours * 12.00
Now when you call this class you HAVE to pass all the arguments the
Rob = PartTimeEmployee('Rob')
b = Rob.calculate_wage(40)