Cara menggunakan python oop

Bismillah…

Berikut saya tuliskan tutorial python OOP (Object-Oriented Programming) untuk pemula yang saya ambil dari youtube. Karena kebetulan penulis juga masih ‘buta’ tentang OOP 🙂
Mudah-mudahan bisa bermanfaat untuk penulis dan teman-teman pembaca sekalian.
Check this out!

  1. Pengenalan OOP
    Menampilkan class sederhana bernama “Hero”. Perlu diperhatikan code pada contoh berikut masih kurang rapi, untuk code yang lebih rapi bisa cek tutorial selanjutnya (Contoh penggunaan __init() ).
    Code :

class Hero: pass hero1 = Hero() # object / instance (instantiate) hero2 = Hero() hero3 = Hero() hero1.name = "sniper" hero1.health = 100 hero2.name = "sven" hero2.health = 200 hero3.name = "ucup" hero3.health = 1000 print(hero1) print(hero1.name) print(hero1.health) print(hero1.__dict__)

Output :

Gambar 1. Tampilan output program di terminal ubuntu


2. Contoh Penggunaan __init__()
Berikut merupakan contoh program sederhana untuk menggunaan __init() pada class “Hero”. Atribut yang terdapat pada class dapat dipanggil dengan syntax __dict__ .
Code :

class Hero: def __init__(self, inputName, inputHealth, inputPower, inputArmor): self.name = inputName self.health = inputHealth self.power = inputPower self.armor = inputArmor hero1 = Hero("sniper", 100, 10, 4) hero2 = Hero("mirana", 100, 15, 1) hero3 = Hero("ucup", 1000, 100, 0) # menampilkan 1 per 1 atribut dari class Hero print(hero1.name) print(hero1.health) print(hero1.armor) # menampilkan semua atribut sekaligus dari class Hero print(hero1.__dict__) print(hero2.__dict__) print(hero3.__dict__)

Output :

Gambar 2. Penggunaan __init__()


3. Contoh penggunaan Instance variables
Berikut merupakan contoh penggunaan Instance variable (variabel yang ada di dalam class). Catatan penting, ketika akan memanggil variabel ini di program utama, kita perlu menambahkan nama class di depannya, misal pada contoh di bawah ini: “Hero.jumlah”
Hero : nama class
jumlah : nama instance variable-nya.
Code :

# instance variable: variabel yang ada di dalam class class Hero: # template #class variabel jumlah = 0 def __init__(self, inputName, inputHealth, inputPower, inputArmor): # instance variabel self.name = inputName self.health = inputHealth self.power = inputPower self.armor = inputArmor Hero.jumlah += 1 print("membuat Hero dengan nama " + inputName) hero1 = Hero("sniper", 100, 10, 4) print(Hero.jumlah) # kalo mau manggil class variable, depannya harus dikasih nama class-nya! hero2 = Hero("mirana", 100, 15, 1) print(Hero.jumlah) hero3 = Hero("ucup", 1000, 100, 0) print(Hero.jumlah)

Output :

Gambar 3. Penggunaan instance variabel yang terdapat di dalam class

4. Pengenalan methods
Berikut merupakan contoh sederhana penggunaan methods yang terdapat di dalam class. Catatan: nama class harus disebutkan terlebih dahulu sebelum memanggil methods. Untuk lebih jelasnya, perhatikan contoh di bawah 🙂

Code :

class Hero: # class variable jumlah_hero = 0 def __init__(self, inputName, inputHealth, inputPower, inputArmor): # instance variable self.name = inputName self.health = inputHealth self.power = inputPower self.armor = inputArmor Hero.jumlah_hero += 1 # void function, method tanpa return, tanpa argumen def siapa(self): print("namaku adalah " + self.name) # method dengan argumen, tanpa return def healthUp(self, up): self.health += up # method dengan return def getHealth(self): return self.health hero1 = Hero('sniper', 100, 10, 5) hero2 = Hero('mario bros', 90, 5, 10) hero1.siapa() hero1.healthUp(10) print(hero1.getHealth())

Output :

Gambar 4. Contoh penggunaan methods yang ada di dalam class.


5. Latihan OOP sederhana
Berikut merupakan contoh penggunaan OOP sederhana pada python, silahkan temen-temen pahami pelan-pelan, karena ini merupakan dasar yang penting 🙂
Code :

class Hero: def __init__(self,name,health,attackPower,armorNumber): self.name = name self.health = health self.attackPower = attackPower self.armorNumber = armorNumber def serang(self, lawan): print(self.name + ' menyerang ' + lawan.name) lawan.diserang(self, self.attackPower) def diserang(self, lawan, attackPower_lawan): print(self.name + ' diserang ' + lawan.name) attack_diterima = attackPower_lawan/self.armorNumber print('serangan terasa : ' + str(attack_diterima)) self.health -= attack_diterima print('darah ' + self.name + ' tersisa ' + str(self.health)) sniper = Hero('sniper',100,10,5) rikimaru = Hero('rikimaru',100,20,10) sniper.serang(rikimaru) print("\n") rikimaru.serang(sniper) print("\n") rikimaru.serang(sniper) print("\n") rikimaru.serang(sniper) print("\n") rikimaru.serang(sniper) print("\n") rikimaru.serang(sniper) print("\n")

Output :

Gambar 5. Latihan membuat game sederhana dengan OOP di python.


6. Latihan OOP Tkinter sederhana
Pada code di bawah, kita dapat melihat penggunaan konsep OOP pada Tkinter.
Note: Class ditulis huruf besar, misal Tk(), Label(), Button().
Sedangkan method ditulis huruf kecil, misal : pack(), mainloop().
Pastikan menggunakan python3 ketika akan running Tkinter!!
Code :

import tkinter main_window = tkinter.Tk() label1 = tkinter.Label(main_window, text = "label1") label2 = tkinter.Label(main_window, text = "label2") tombol1 = tkinter.Button(main_window, text = "tombol1") tombol2 = tkinter.Button(main_window, text = "tombol2") # method positioning label1.pack() label2.pack() tombol1.pack() tombol2.pack() # method menampilkan GUI main_window.mainloop()

Output :

Gambar 6. Contoh penggunaan konsep OOP pada Tkinter.

7. Pengenalan Private Variable
Pada bagian ini, penulis sarankan untuk melihat video tutorial pada link ini, agar lebih jelas dan paham. Yang penulis pahami, private variable penulisannya diawali tanda double underscore “__” (misal: __privateJumlah, self.__private). Sedangkan untuk protected variable diawali dengan single underscore “_” (misal: self._protected).
Code :

# variabel private : ada di dalam class,TAPI TIDAK BISA DIAKSES di program utama, misal: tinggi badan hero. # variabel public : ada di dalam class, dan BISA DIAKSES di program utama, misal: name dan health dari hero. class Hero: # class variabel jumlah = 0 __privateJumlah = 0 def __init__(self, name, health): self.name = name self.health = health # variabel instance private (penulisannya diawali dengan double underscore "__") self.__private = "private" # variabel instance protected self._protected = "protected" # variabel protected bukan variabel private! lina = Hero("lina",100) print(lina.__dict__) print(Hero.__dict__) print(Hero.__privateJumlah) # uncomment untuk melihat bahwa Hero.__privateJumlah termasuk variabel private!

Output :

Gambar 7. contoh penulisan private variable


8. Pengenalan Encapsulasi
Code :

class Hero: def __init__(self, name, health, attackPower): self.__name = name self.__health = health self.__attPower = attackPower # getter def getName(self): return self.__name def getHealth(self): return self.__health # setter def diserang(self, serangPower): self.__health -= serangPower def setAttPower(self, nilaibaru): self.__attPower = nilaibaru # awal dari game earthshaker = Hero("earthshaker", 50, 5) # game berjalan print(earthshaker.getName()) print(earthshaker.getHealth()) earthshaker.diserang(5) print(earthshaker.getHealth())

Output :

Gambar 8. Encapsulasi


9. Pengenalan Staticmethod dan Classmethod
Code :

class Hero: # private class variable __jumlah = 0 def __init__(self,name): self.__name = name Hero.__jumlah += 1 # method ini hanya berlaku untuk objek def getJumlah(self): return Hero.__jumlah # method ini tidak berlaku untuk objek tapi berlaku untuk class def getJumlah2(): return Hero.__jumlah # method static (decorator) nempel ke objek dan class @staticmethod def getJumlah2(): return Hero.__jumlah @classmethod def getJumlah3(cls): return cls.__jumlah sniper = Hero('sniper') print(Hero.getJumlah2()) rikimaru = Hero('rikimaru') print(sniper.getJumlah2()) drowranger = Hero('drowranger') print(Hero.getJumlah3())

Output :

Gambar 9. Static method dan Class method


10. Pengenalan Getter dan Setter
Note: Harus python3!
Code :

class Hero: def __init__(self, name, health, armor): self.name = name self.__health = health self.__armor = armor #self.info = "name {} : \n\thealth: {}".format(self.name,self.__health) @property def info(self): return "name {} : \n\thealth: {}".format(self.name,self.__health) @property def armor(self): pass @armor.getter def armor(self): return self.__armor @armor.setter def armor(self, input): self.__armor = input @armor.deleter def armor(self): print('armor di delet') self.__armor = None sniper = Hero('sniper',100,10) print('merubah info') print(sniper.info) sniper.name = 'dadang' print(sniper.info) print('getter dan setter untuk __armor:') print(sniper.armor) sniper.armor = 50 print(sniper.armor) print('delete armor') del sniper.armor print(sniper.__dict__)

Output :

Gambar 10. Getter dan Setter

Update Penting: 14 november 2020 (penambahan code python2 untuk getter and setter!!)
Code :

# getter and setter # untuk python2 !! # source: //streetkoders.medium.com/property-python-sebuah-idiomatik-untuk-membuat-setter-dan-getter-d3a3a13be0b2 class Hero(object): def __init__(self, name,health,armor,*args, **kwargs): self.name = kwargs.get('name', name) self.__health = kwargs.get('health', health) self.__armor = kwargs.get('armor', armor) @property def info(self): return "name {} :\n\thealth: {}".format(self.name,self.__health) @property def armor(self): return self.__armor @armor.getter def armor(self): return self.__armor @armor.setter def armor(self, armor): self.__armor = armor @armor.deleter def armor(self): print('armor di delet') self.__armor = None sniper = Hero("sniper",100,10) print("merubah info") print(sniper.info) sniper.name = "dadang" print(sniper.info) print("getter and setter untuk __armor : ") print(sniper.armor) sniper.armor = 50 print(sniper.armor) print("delete armor") del sniper.armor print(sniper.__dict__)

Output :

11. Latihan Encapsulasi
Note : Harus python3 !!

Gambar 11. Gambaran umum tentang program yang akan dibuat

Code :

# Latihan Encapsulasi # source: //www.youtube.com/watch?v=rakQ1ji9XRM&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=11 class Hero: # private class variabel __jumlah = 0 def __init__(self,name,health,attPower,armor): self.__name = name self.__healthStandar = health self.__attPowerStandar = attPower self.__armorStandar = armor self.__level = 1 self.__exp = 0 self.__healthMax = self.__healthStandar * self.__level self.__attPower = self.__attPowerStandar * self.__level self.__armor = self.__armorStandar * self.__level self.__health = self.__healthMax Hero.__jumlah += 1 @property def info(self): return "{} level {}: \n\thealth = {}/{} \n\tattack = {} \n\tarmor = {}".format( self.__name, self.__level, self.__health, self.__healthMax, self.__attPower, self.__armor) @property def gainExp(self): pass @gainExp.setter def gainExp(self,addExp): self.__exp += addExp if (self.__exp >= 100): print(self.__name, 'level up') self.__level += 1 self.__exp -= 100 self.__healthMax = self.__healthStandar * self.__level self.__attPower = self.__attPowerStandar * self.__level self.__armor = self.__armorStandar * self.__level def attack(self,musuh): self.gainExp = 50 slardar = Hero('slardar',100,5,10) axe = Hero('axe',100,5,10) print(slardar.info) slardar.attack(axe) slardar.attack(axe) slardar.attack(axe) print(slardar.gainExp)

Output :

Gambar 12. Output program Latihan encapsulasi

Update Penting: 14 november 2020 (penambahan code python2 untuk latihan encapsulasi !!)
Code :

# Latihan Encapsulasi # untuk python2 !! # source: //www.youtube.com/watch?v=rakQ1ji9XRM&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=11 # //streetkoders.medium.com/property-python-sebuah-idiomatik-untuk-membuat-setter-dan-getter-d3a3a13be0b2 class Hero(object): # private class variabel __jumlah = 0 def __init__(self,name,health,attPower,armor,*args,**kwargs): self.__name = kwargs.get('name',name) self.__healthStandar = kwargs.get('health',health) self.__attPowerStandar = kwargs.get('attPower',attPower) self.__armorStandar = kwargs.get('armor',armor) self.__level = 1 self.__exp = 0 self.__healthMax = self.__healthStandar * self.__level self.__attPower = self.__attPowerStandar * self.__level self.__armor = self.__armorStandar * self.__level self.__health = self.__healthMax Hero.__jumlah += 1 @property def info(self): return "{} level {}: \n\thealth = {}/{} \n\tattack = {} \n\tarmor = {}".format( self.__name, self.__level, self.__health, self.__healthMax, self.__attPower, self.__armor ) @property def gainExp(self): pass @gainExp.setter def gainExp(self,addExp): self.__exp += addExp if (self.__exp >= 100): print(self.__name,'level up') self.__level += 1 self.__exp -= 100 self.__healthMax = self.__healthStandar * self.__level self.__attPower = self.__attPowerStandar * self.__level self.__armor = self.__armorStandar * self.__level def attack(self,musuh): self.gainExp = 50 print("\n{} menyerang {}".format( self.__name, musuh.__name )) slardar = Hero("slardar",100,5,10) axe = Hero("axe",100,5,10) print(slardar.info) slardar.attack(axe) print(slardar.info) slardar.attack(axe) print(slardar.info) slardar.attack(axe) print(slardar.info) slardar.attack(axe) print(slardar.info) print(slardar.gainExp)

Output :


12. Pengenalan Inheritance

Gambar 13. Sekilas tentang Inheritance dan contoh sederhana

Gambar 14. Contoh inheritance untuk pembuatan tombol (button)

Code :

class Hero: def __init__(self,name,health): self.name = name self.health = health class Hero_intelligent(Hero): pass class Hero_strength(Hero): pass lina = Hero('lina',100) techies = Hero_intelligent('techies',50) axe = Hero_strength('axe',200) print(lina.name) print(techies.name) print(axe.name)

Output :

Gambar 15. Output Program Pengenalan Inheritance


13. Pengenalan Super
Note: Harus menggunakan python3 !!
Code :

# wajib pake python3 !! class Hero: def __init__(self,name,health): self.name = name self.health = health def showInfo(self): print("{} dengan health: {}".format(self.name,self.health)) class Hero_intelligent(Hero): def __init__(self,name): #Hero.__init__(self, name, 100) super().__init__(name, 100) super().showInfo() class Hero_strength(Hero): def __init__(self,name): super().__init__(name, 200) super().showInfo() lina = Hero_intelligent('lina') axe = Hero_strength('axe')

Output :


14. Pengenalan Override Method
Note: Harus menggunakan python3 !!
Code :

# wajib pake python3 !!! # source : //www.youtube.com/watch?v=sYKhxqcDu3w&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=14 class Hero: def __init__(self,name,health): self.name = name self.health = health def showInfo(self): print("showInfo di class Hero") print("{} health: {}".format( self.name, self.health ) ) class Hero_intelligent(Hero): def __init__(self,name): super().__init__(name,100) # override def showInfo(self): print("showInfo di subclass Hero_intelligent") print("{} \n\tTipe: intelligent, \n\thealth: {}".format( self.name, self.health ) ) class Hero_strength(Hero): def __init__(self,name): super().__init__(name,200) lina = Hero_intelligent('lina') axe = Hero_strength('axe') axe.showInfo()

Output :


15. Latihan Inheritance
Note : Wajib menggunakan python3 !
Code : Simpan dengan nama Hero.py !

# simpan dengan nama Hero.py # wajib menggunakan python3 ! # source : //www.youtube.com/watch?v=sSgKKLzxqS0&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=15 from Hero import HeroIntelligent,HeroStrength lina = HeroIntelligent('lina') slardar = HeroStrength('slardar') lina.show_info() slardar.show_info() lina.gainExp = 200 slardar.gainExp = 250 lina.show_info() slardar.show_info() class Hero: def __init__(self,name): self.health_pool = [0,100,200,300,400,500] self.attPower_pool = [0,10,20,30,40,50] self.armor_pool = [0,1,2,3,4,5] self.__name = name self.__exp = 0 self.__level = 0 def show_info(self): print("{} \n\tlevel: {}\n\thealth: {} \n\tattPower: {} \n\tarmor: {}".format( self.__name, self.__level, self.__health, self.__attPower, self.__armor ) ) @property def health_pool(self): pass @property def attPower_pool(self): pass @property def armor_pool(self): pass @property def levelUp(self): pass @property def gainExp(self): pass @health_pool.setter def health_pool(self,input): self.__health_pool = input @attPower_pool.setter def attPower_pool(self,input): self.__attPower_pool = input @armor_pool.setter def armor_pool(self,input): self.__armor_pool = input @gainExp.setter def gainExp(self,input): self.__exp += input if(self.__exp >= 100): self.levelUp = self.__exp//100 self.__exp %= 100 @levelUp.setter def levelUp(self,input): self.__level += input self.__health = self.__health_pool[self.__level] self.__attPower = self.__attPower_pool[self.__level] self.__armor = self.__armor_pool[self.__level] class HeroIntelligent(Hero): def __init__(self,name): super().__init__(name) self.health_pool = [0,50,100,150,200,250] self.attPower_pool = [0,20,40,60,80,100] self.armor_pool = [0,0.5,1,1.5,2,2.5] self.levelUp = 1 class HeroStrength(Hero): def __init__(self,name): super().__init__(name) self.health_pool = [0,200,300,400,500,600] self.attPower_pool = [0,20,40,60,80,100] self.armor_pool = [0,2,4,6,8,10] self.levelUp = 1

Main code :

# simpan dengan nama Hero.py # wajib menggunakan python3 ! # source : //www.youtube.com/watch?v=sSgKKLzxqS0&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=15 from Hero import HeroIntelligent,HeroStrength lina = HeroIntelligent('lina') slardar = HeroStrength('slardar') lina.show_info() slardar.show_info() lina.gainExp = 200 slardar.gainExp = 250 lina.show_info() slardar.show_info() from Hero import HeroIntelligent,HeroStrength lina = HeroIntelligent('lina') slardar = HeroStrength('slardar') lina.show_info() slardar.show_info() lina.gainExp = 200 slardar.gainExp = 250 lina.show_info() slardar.show_info()

Output :


16. Multiple Inheritance
Code : Contoh 1

# source : //www.youtube.com/watch?v=dhIAsMkQeGo&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=16 class A: def method_A(self): print("ini adalah method A") class B: def method_B(self): print("ini adalah method B") # multiple inheritance class C(A,B): pass objek = C() objek.method_A() objek.method_B()

Output :

Code : Contoh 2

# source : //www.youtube.com/watch?v=dhIAsMkQeGo&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=16 class Team: def setTeam(self,team): self.team = team def showTeam(self): print(self.team) class Tipe_Hero: def setTipe(self,tipe): self.tipe = tipe def showTipe(self): print(self.tipe) class Hero(Team,Tipe_Hero): def __init__(self,name,health): self.name = name self.health = health Ucup = Hero('Ucup',100) Ucup.setTeam("merah") Ucup.setTipe("cundang") Ucup.showTeam() Ucup.showTipe()

Output :


17. Method Resolution Order
Code :

# method resolution order // multiple inheritance # source : //www.youtube.com/watch?v=bn88uOxuUdc&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=17 class A: def show(self): print("ini adalah show A") class B: def show(self): print("ini adalah show B") # coba ini juga!: # class C(A,B), maka urutan eksekusinya C,A,B # class C(B,A), maka urutan eksekusinya C,B,A class C(B,A): pass objek = C() objek.show() # uncomment code di bawah, kemudian pencet 'q' setelah running program, untuk mengakhiri running program ! #help(objek)

Output : tanpa help(objek)

Gambar 17. Tanpa help(objek)

Output : dengan help(objek)

Gambar 18. Dengan help(objek), pencet ‘q’ untuk mengakhiri running program. Dapat melihat urutan eksekusi class (C, B, A)

Referensi:
– //www.youtube.com/watch?v=1PjHsUnOkes
– //www.youtube.com/watch?v=w9emRmkbeps
– //www.youtube.com/watch?v=upngNSC9FU8
– //www.youtube.com/watch?v=6F0T4IEzke4
– //www.youtube.com/watch?v=k9ANKapvMKo
– //www.youtube.com/watch?v=6fIc2jV6HfY&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=7
– //www.youtube.com/watch?v=NDjX-8kak2g&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=8
– //www.youtube.com/watch?v=ZPU1X5C0DaE&list=PLZS-MHyEIRo7ab0-EveSvf4CLdyOECMm0&index=10

Apakah python mendukung OOP?

Bahasa Pemrograman Python merupakan bahasa yang mendukung 100% Object Oriented Programming (OOP).

Apa itu OOP pada python?

Object Oriented Programming (OOP) adalah suatu paradigma pemrograman yang berorientasi pada konsep class (kelas) dan object (objek). Konsep ini sering kali digunakan dalam menyusun aplikasi menjadi kode yang sederhana dan dapat digunakan kembali (reuseable).

Apa saja konsep OOP?

4 Prinsip OOP.
Encapsulation. Prinsip enkapsulasi atau kapsulisasi dalam OOP dilakukan ketika setiap objek dalam pemrograman dapat mempertahankan keadaan privat di dalam sebuah kelas-kelas cetak biru. ... .
2. Abstraction. Abstraction atau abstraksi merupakan perpanjangan tangan enkapsulasi. ... .
3. Inheritance. ... .
Polymorphism..

Apa itu atribut di python?

Atribut adalah data anggota (variabel kelas dan variabel contoh) dan metode, diakses melalui notasi titik. Sebuah variabel yang dibagi oleh semua contoh kelas. Variabel kelas didefinisikan dalam kelas tapi di luar metode kelas manapun.

Postingan terbaru

LIHAT SEMUA