Python Decorator

Alhamdulillah akhirnya penulis bisa melanjutkan tutorial selanjutnya yang berkaitan dengan openerp versi terbarunya yaitu odoo v8.

Setelah rilisnya v8 ini, bukan hanya sekedar dengan berubahnya nama menjadi odoo akan tetapi telah terjadinya perubahan yang begitu banyak baik dari segi fungsional maupun sisi technical dengan ditandai lahirnya new API ini.

Dengan adanya new API ini, maka merupakan suatu ‘kabar gembira’ untuk para developer sehingga dalam melakukan development menjadi lebih mudah, simple, lebih OOP dan lebih rapih seperti pada gambar dibawah ini :

new_api

Diantara salah satu perubahan pentingnya -dari gambar diatas- adalah dengan memaksimalkan fungsi decorator pada python dengan ditandainya symbol @. Dengan adanya decorator, setiap method bisa ‘meminjam’ fungsi dari method lainnya tanpa perlu menulis ulang kembali. Karna pentingnya peranan decorator pada new API odoo ini, maka penulis khususkan pembahasan pada sesi kali ini.

Decorator sesuai namanya secara bahasa memiliki arti pendekorasi atau penghias. Jika kita kaitkan dengan python maka decorator memiliki arti yaitu sebuah method yang ‘mengambil’ method lain dan menambahkan beberapa fungsi kepada method tersebut tanpa harus melakukan modifikasi. Bahasa simplenya mungkin method yang melakukan ‘pendekorasian/penghiasan’ kepada method lainnya 😀

Mungkin untuk lebih jelasnya kita langsung mencoba contoh dari code dibawah ini :


def salam(tes):
   def wrapper(nama):
       return "Assalamu'alaikum " + tes(nama)
   return wrapper

def rahmat(tes):
   def wrapper(nama):
       return "Warohmatullah " + tes(nama)
   return wrapper

def berkah(tes):
   def wrapper(nama):
       return "Wabarokatuh " + tes(nama)
   return wrapper


Pada contoh code diatas kita telah membuat beberapa method decorator yaitu sebanyak 3 method yang mana pada masing-masing method tersebut memiliki fungsi tersendiri yaitu menambah kalimat/kata tertentu. Setelah kita mempersiapkan method decoratornya, maka kita buat method baru yang akan menggunakan decorator dari method-method diatas seperti contoh code dibawah ini :


def decor1(name):
   return name

@salam
def decor2(name):
   return name

@salam
@rahmat
def decor3(name):
   return name

@salam
@rahmat
@berkah
def decor4(name):
   return name


print decor1("Aziz")
print decor2("Aziz")
print decor3("Aziz")
print decor4("Aziz")


Jika kita perhatikan, pada contoh code diatas kita telah membuat 4 method yaitu :

– Method decor1() -> Tidak menggunakan decorator sama sekali
– Method decor2() -> Menggunakan decorator @salam
– Method decor3() -> Menggunakan decorator @salam dan @rahmat
– Method decor4() -> Menggunakan decorator @salam, @rahmat dan @berkah

Selain membuat 4 method baru diatas, kita juga mencoba untuk menjalankan method-method tersebut dengan memberikan paramater sebuah nama yang sama yaitu ‘Aziz’. Setelah kita mengeksekusi code diatas, maka akan menghasilkan text seperti contoh dibawah ini :


 
Aziz
Assalamu'alaikum Aziz
Assalamu'alaikum Warohmatullah Aziz
Assalamu'alaikum Warohmatullah Wabarokatuh Aziz

Hasil dari eksekusi program yang telah kita buat sebelumnya sebanyak 4 baris sesuai dengan hasil yang diberikan. Dimana semakin banyak kita menggunakan ‘penghias’ :D, maka semakin banyak pula ‘hiasan’ yang diberikan.

Mungkin dari contoh simple code diatas dapat memberikan pencerahan mengenai decorator pada python. Mengingat pentingnya hal ini -decorator- pada new API odoo, maka saya sarankan untuk melanjutkan pertualangannya pada mbah google 😀

Semoga bermanfaat dan selamat mencoba …

Advertisements

7 thoughts on “Python Decorator

  1. mas saya mau tanya ttg perpindahan instalasi odoo, misalnya saya buat project di virtual machine kemudian setalah jadi saya mau pindahkan ke server asli, itu langkah nya bagaimana ya ? terimakasih

    • Caranya cukup simple:
      1. Lakukan instalasi odoo pada server yang asli
      2. Pindahkan addons yang di vm ke server asli sesuai path addons nya
      3. Restore database vm yang sudah dipersiakan (master datanya) ke server asli

  2. Pingback: [Odoo 10] Technical Documentation -Part 6- | Tutorial OpenERP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s