November 18, 2020

258 words 2 mins read

Python Class

Python Class

Seperti lazimnya dalam bahasa pemrograman lain yg berorientasi obyek, kelas dalam python dapat digunakan untuk abstraksi, membatasi detil mekanisme secara internal (dalam kelas).

Secara sintaks, mendefinisikan dan menggunakan kelas dalam Python relatif mudah, seperti ditunjukan contoh berikut.

class Greeter:
    # Constructor
    def __init__(self, name):
        self.name = name  # Create an instance variable
    
    # Instance method
    def greet(self, loud=False):
        if loud:
            print('HELLO, %s!' % self.name.upper())
        else:
            print('Hello, %s' % self.name)
            
g = Greeter('Fred')  # Construct an instance of the Greeter class
g.greet()            # Call an instance method; prints "Hello, Fred"
g.greet(loud=True)   # Call an instance method; prints "HELLO, FRED!"

Contoh lain:

class Animal:
    def say_hi(self):
        print("Hello!")
x = Animal()
x.say_hi()

Contoh yang lebih kompleks: bilangan rasional/pecahan.

Disini kita buat kelas yang merepresentasikan bilangan rasional dalam bentuk p/q dimana p dan q adalah bilangan bulat/integer.

class Rational:
    def __init__(self, p, q=1):
    
        if q == 0:
            raise ValueError('Denominator must not be zero')
        if not isinstance(p, int):
            raise ValueError('Numerator must be an integer')
        if not isinstance(q, int):
            raise ValueError('Denominator must be an integer')
        
        g = math.gcd(p, q)
        
        self.p = p // g # integer division
        self.q = q // g
    
    # method to convert rational to float
    def __float__(self):
        return self.p / self.q
    
    # method to convert rational to string for printing
    def __str__(self):
        return f'{self.p}/{self.q}'
    
    def __repr__(self):
        return f'Rational({self.p}, {self.q})'

Contoh penggunaan

a = Rational(6, 4)
b = Rational(3, 2)

print(type(a))
print(f"a = {a}")
print(f"b = {b}")
print([a,b])
print(f"float(a) = {float(a)}")

Dengan kelas, kita juga bisa melakukan overload operator matematika, misalnya penjumlahan a+b dimana a dan b adalah object bilangan rasional.

comments powered by Disqus