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, genellikle cls 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.