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.