Object Oriented, Inheritance, super()

Kategori: Python , 04 Eylül 2019 , JanFranco


Inheritance yani miras kavramı, bir sınıfın başka bir sınıfı miras olarak alması olayıdır. Örneğin bir Worker sınıfı oluşturduk. Supervisor sınıfı oluşturmamız gerekiyor. Aslında Supervisor da bir Worker'dır. Bu nedenle Worker sınıfının methodlarını tekrar yazmamıza gerek yoktur. Supervisor adında bir sınıf açıp Worker sınıfını miras alırsak, methodlarını da override edip kullanabiliriz. Nasıl yapılacağını görelim, Worker adında bir sınıf oluşturalım:


class Worker:
    def __init__(self, name, salary, department):
        self.name = name
        self.salary = salary
        self.department = department

    def show_details(self):
        print("""
            Worker: {}
            Salary: {}
            Department: {}
        """.format(self.name, self.salary, self.department))

    def raise_salary(self, amount):
        print("Raising the salary...")
        self.salary += amount

    def change_department(self, newDep):
        self.department = newDep
Admin adına bir sınıf oluşturalım. Worker sınıfını miras almak için class Admin(Worker): şeklinde bir kullanım yapacağız. Görelim:


class Admin(Worker):
    def __init__(self, name, salary, department, resPerson):
        super(Admin, self).__init__(name, salary, department)
        self.resPerson = resPerson

    def show_details(self):
        print("""
            Worker: {}
            Salary: {}
            Department: {}
            Responsibled Person: {}
        """.format(self.name, self.salary, self.department, self.resPerson))
Burada show_details methodunu override ettik. Aynı zamanda Worker sınıfını miras alarak Admin sınıfını oluşturduk. Şimdi bu sınıflardan objeler oluşturalım ve kullanalım:


worker1 = Worker("Jan Franco", 3500, "IT")
admin1 = Admin("Jane Franco", 5000, "Admin", 12)
worker1.show_details()
admin1.show_details()
admin1.raise_salary(5000)
admin1.show_details()
admin1.change_department("Mobile Dev")
admin1.show_details()
Sonuç:


            Worker: Jan Franco
            Salary: 3500
            Department: IT
        

            Worker: Jane Franco
            Salary: 5000
            Department: Admin
            Responsibled Person: 12
        
Raising the salary...

            Worker: Jane Franco
            Salary: 10000
            Department: Admin
            Responsibled Person: 12
        

            Worker: Jane Franco
            Salary: 10000
            Department: Mobile Dev
            Responsibled Person: 12


Sonraki Yazı: Exception Handling, try, except, finally
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın