Python Sınıfları ve Nesnelerine Başlangıç Rehberi
Python, nesne yönelimli bir programlama dilidir, yani nesneler oluşturmanıza ve yönetmenize olanak tanır. Bir nesne, nesneler oluşturmak için bir taslak olan bir sınıfın örneğidir. Sınıfları ve nesneleri anlamak, programlamaya yapılandırılmış bir yaklaşım sağladığı için Python'da ustalaşmak için temeldir. Bu makale sizi Python sınıfları ve nesneleri, bunların nasıl tanımlanacağı ve kodunuzda nasıl etkili bir şekilde kullanılacağı konusunda bilgilendirecektir.
Sınıf Nedir?
Python'da bir sınıf, nesneler oluşturmak için bir taslaktır. Oluşturulan nesnelerin sahip olacağı bir dizi nitelik ve yöntemi tanımlar. Nitelikler, verileri tutan değişkenlerdir, yöntemler ise nesnenin davranışını tanımlayan işlevlerdir. Bir sınıf, class
anahtar sözcüğünü, ardından sınıf adını ve iki nokta üst üste işaretini kullanarak tanımlanabilir.
# Defining a simple class
class Dog:
# Class attribute
species = "Canis familiaris"
# Initializer / Instance attributes
def __init__(self, name, age):
self.name = name
self.age = age
# Instance method
def description(self):
return f"{self.name} is {self.age} years old"
# Another instance method
def speak(self, sound):
return f"{self.name} says {sound}"
Nesne Nedir?
Bir nesne, bir sınıfın örneğidir. Bir sınıf tanımlandığında, o sınıfın bir nesnesi oluşturulana kadar bellek tahsis edilmez. Bir nesne oluşturmak, sınıfı bir fonksiyonmuş gibi çağırmayı içerir. Daha sonra, nokta gösterimini kullanarak nesne aracılığıyla sınıfın niteliklerine ve yöntemlerine erişebilirsiniz.
# Creating an object of the Dog class
my_dog = Dog("Buddy", 5)
# Accessing attributes and methods
print(my_dog.description()) # Output: Buddy is 5 years old
print(my_dog.speak("Woof")) # Output: Buddy says Woof
__init__
Yöntemi
__init__
yöntemi, Python'da özel bir yöntemdir ve bir oluşturucu olarak da bilinir. Sınıfın yeni bir örneği oluşturulduğunda otomatik olarak çağrılır. __init__
yöntemi, sınıfın niteliklerini başlatmak için kullanılır. def
anahtar sözcüğü, ardından yöntem adı __init__
ve sınıfın örneğine atıfta bulunan self
kullanılarak tanımlanır.
# Example of using the __init__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Creating an object of the Person class
person1 = Person("Alice", 30)
print(person1.name) # Output: Alice
print(person1.age) # Output: 30
Örnek Nitelikleri ve Sınıf Nitelikleri
Python'daki nitelikler sınıf düzeyinde veya örnek düzeyinde tanımlanabilir. Sınıf nitelikleri sınıfın tüm örnekleri tarafından paylaşılırken, örnek nitelikleri her örneğe özgüdür. Sınıf nitelikleri doğrudan sınıfta tanımlanırken, örnek nitelikleri genellikle __init__
yöntemi içinde olmak üzere yöntemlerin içinde tanımlanır.
# Example of class and instance attributes
class Car:
# Class attribute
wheels = 4
def __init__(self, color, brand):
# Instance attributes
self.color = color
self.brand = brand
# Creating objects of the Car class
car1 = Car("Red", "Toyota")
car2 = Car("Blue", "Honda")
print(car1.wheels) # Output: 4
print(car2.wheels) # Output: 4
print(car1.color) # Output: Red
print(car2.color) # Output: Blue
Python Sınıflarındaki Yöntemler
Yöntemler, nesnelerin davranışlarını tanımlayan bir sınıfın içinde tanımlanan işlevlerdir. Python sınıflarında farklı yöntem türleri vardır:
- Örnek Yöntemleri: Bunlar, sınıfın bir örneği üzerinde çalışan en yaygın yöntem türüdür. Nesne durumunu değiştirebilir ve nesneye bir başvuru gerektirebilirler, genellikle
self
. - Sınıf Yöntemleri: Bu yöntemler
@classmethod
dekoratörü ile işaretlenir ve ilk parametre olarak sınıfın kendisine bir referans alır, genelliklecls
olarak adlandırılır. - Statik Yöntemler: Bu yöntemler
@staticmethod
dekoratörü ile işaretlenir ve ne örneğe ne de sınıfa bir referans gerektirmez. Normal işlevler gibi davranırlar ancak sınıfın ad alanına aittirler.
# Example of instance, class, and static methods
class MathOperations:
# Class attribute
pi = 3.14
# Instance method
def square(self, number):
return number ** 2
# Class method
@classmethod
def circle_area(cls, radius):
return cls.pi * (radius ** 2)
# Static method
@staticmethod
def add(x, y):
return x + y
# Using different types of methods
math = MathOperations()
print(math.square(4)) # Output: 16 (Instance method)
print(MathOperations.circle_area(5)) # Output: 78.5 (Class method)
print(MathOperations.add(3, 7)) # Output: 10 (Static method)
Python'da Kalıtım
Miras, bir sınıfın başka bir sınıftan özellik ve yöntem miras almasına izin veren nesne yönelimli programlamanın temel bir özelliğidir. Miras alan sınıfa child class adı verilirken, miras alınan sınıfa parent class adı verilir. Miras, kodun yeniden kullanılabilirliğini artırır ve kod yapısını basitleştirir.
# Example of inheritance
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name} makes a sound"
# Child class inheriting from Animal
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow"
# Creating objects of the parent and child classes
animal = Animal("Generic Animal")
cat = Cat("Whiskers")
print(animal.speak()) # Output: Generic Animal makes a sound
print(cat.speak()) # Output: Whiskers says Meow
Çözüm
Sınıfları ve nesneleri anlamak, etkili Python programları yazmak için temeldir. Bu kavramlarda ustalaşarak daha düzenli ve verimli kodlar oluşturabileceksiniz. Bu kılavuz, Python'da sınıfları tanımlama, nesneler oluşturma, yöntemleri kullanma ve kalıtımın temellerini ele aldı. Pratik yaparak, Python projelerinizde nesne yönelimli programlama tekniklerini kullanma konusunda rahatlayacaksınız.