Bu öğreticide, nesne yönelimli bir programlama yaklaşımı için Python`da soyutlama kavramını tartışacağız.
Aslında Soyutlama, bir işlemin veya yöntemin dahili uygulamalarını kullanıcıdan gizlemeye odaklanır. Böylece kullanıcı ne yaptığını biliyor ama işin nasıl yapıldığını bilmiyor.
& nbsp;
Python`da soyutlama nedir?
Örneğin, insanlar bir arabayı binlerce ayrı parçadan oluşan bir koleksiyon olarak düşünmezler. Bunun yerine, onu kendine özgü davranışı olan iyi tanımlanmış bir nesne olarak görürler. Bu soyutlama, insanların arabayı oluşturan parçaların karmaşıklığının farkında olmadan araba kullanmalarını sağlar. Motor şanzıman ve fren sistemlerinin ayrıntılarını görmezden gelebilirler. Bunun yerine, tüm nesneyi kullanabilirler.
Soyutlamayı ve hiyerarşik sınıflandırmayı kullanmanın güçlü bir yolu. Bu, karmaşık sistemlerin anlamlarını katmanlara ayırmamıza ve onları daha yönetilebilir parçalara ayırmamıza olanak tanır. Dışarıda, araba tek bir nesnedir. İçeri girdiğinizde, arabanın birkaç alt sistemden oluştuğunu görüyorsunuz: direksiyon, frenler, ses sistemi, emniyet kemerleri vb. Sırasıyla, bu alt sistemlerin her biri daha küçük bloklardan oluşuyor.
Mesele şu ki biz sürüyoruz. hiyerarşik soyutlamalar kullanan bir araba (veya başka herhangi bir karmaşık sistem).
Bu, OOP kavramlarını kullanan bilgisayar programlarına da uygulanabilir. Bu, Nesne Yönelimli Programlamanın özüdür.
Python`da Soyut Sınıflar ve Yöntemler
Soyut bir sınıf bildirmek için önce abc
modülünü içe aktarmamız gerekir. . Bir örneğe bakalım.
abc`den içe aktar ABC sınıfı abs_class (ABC): #abstract yöntemleri
Burada abs_class
&bu bir özet içinde soyut yöntemlerin veya diğer yöntemlerin tanımlanabileceği sınıf.
Bir özellik olarak soyut sınıflar, herhangi bir sayıyla birlikte var olan herhangi bir sayıda soyut yönteme sahip olabilir. diğer yöntemlerden. Örneğin, aşağıda görebiliriz.
abc import ABC`den, abstractmethod class abs_class (ABC): #normal method def method (self): # yöntem tanımı @abstractmethod def Abs_method (self): #Abs_method tanımı
Burada method()
&normal yöntem, Abs_method()
ise abc modülünden @abstractmethod
öğesini uygular.
Örnek
Artık soyut sınıfları ve yöntemleri bildiğimize göre bir örneğe bakalım.
abc import ABC`den, abstractmethod class Absclass (ABC): def print (self, x): print ("Geçilen değer:", x) @abstractmethod def görev (self): print ("Absclass görevinin içindeyiz") class test_class (Absclass): def task (self): print ("test_class görevinin içindeyiz") class example_class (Absclass): def görev (self ): print ("example_class görevinin içindeyiz") #test_class nesnesi oluşturuldu test_obj = test_class () test_obj.task () test_obj.print (100) #example_class nesnesi oluşturuldu ex ample_obj = example_class () example_obj.task ( ) example_obj .print (200) print ("test_obj, Absclass`ın bir örneği midir?", isinstance (test_obj, Absclass)) print ("example_obj, Absclass`ın bir örneğidir?", isinstance (example_obj, Absclass))
Çıktı:
nerede,
task()
yöntemini ve print()
yöntemini içerir. Bu soyut sınıftan miras alınan diğer iki sınıf, &bunlar test_class
ve example_class
`dur. Her ikisinin de kendi task()
yöntemi vardır (soyut bir yöntem uzantısı).
Kullanıcı test_class ve example_class sınıflarından nesneler oluşturduktan ve task() yöntemini çağırdıktan sonra
bunların her ikisi için de her iki sınıf içindeki gizli task()
method tanımları devreye girer. Bu tanımlar kullanıcıdan gizlenir. Absclass
soyut sınıfından task ()
soyut yöntemi hiçbir zaman gerçekte çağrılmaz.
Ancak print ()
yöntem, test_obj ve example_obj için olduğu gibi çağrılır, print ()
Absclass yöntemi, soyut bir yöntem olmadığı için çağrılır.
Not: soyut bir sınıfı somutlaştıramayız . Bu, Hataya neden olur.