logo

Python Oluşturucu

Yapıcı, sınıfın örnek üyelerini başlatmak için kullanılan özel bir yöntem (işlev) türüdür.

C++ veya Java'da yapıcı, sınıfıyla aynı adı taşır ancak Python'da yapıcıya farklı davranır. Bir nesne oluşturmak için kullanılır.

Yapıcılar iki tip olabilir.

  1. Parametreli Oluşturucu
  2. Parametrelendirilmemiş Oluşturucu

Bu sınıfın nesnesini oluşturduğumuzda yapıcı tanımı yürütülür. Yapıcılar ayrıca nesnenin herhangi bir başlangıç ​​görevini gerçekleştirmesi için yeterli kaynak bulunduğunu da doğrular.

Python'da yapıcıyı oluşturma

Python'da yöntem __sıcaklık__() sınıfın yapıcısını simüle eder. Bu yöntem, sınıf başlatıldığında çağrılır. Kabul eder öz -keyword, sınıfın niteliklerine veya yöntemine erişime izin veren ilk argüman olarak.

Sınıf nesnesini oluştururken, duruma bağlı olarak herhangi bir sayıda argüman iletebiliriz. __sıcaklık__() tanım. Çoğunlukla sınıf niteliklerini başlatmak için kullanılır. Her sınıfın, varsayılan kurucuya dayansa bile bir kurucuya sahip olması gerekir.

Başlatmak için aşağıdaki örneği göz önünde bulundurun Çalışan sınıf nitelikleri.

Örnek

 class Employee: def __init__(self, name, id): self.id = id self.name = name def display(self): print('ID: %d 
Name: %s' % (self.id, self.name)) emp1 = Employee('John', 101) emp2 = Employee('David', 102) # accessing display() method to print employee 1 information emp1.display() # accessing display() method to print employee 2 information emp2.display() 

Çıktı:

 ID: 101 Name: John ID: 102 Name: David 

Bir sınıfın nesnelerinin sayısını sayma

Sınıfın nesnesini oluşturduğumuzda yapıcı otomatik olarak çağrılır. Aşağıdaki örneği düşünün.

Örnek

 class Student: count = 0 def __init__(self): Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print('The number of students:',Student.count) 

Çıktı:

 The number of students: 3 

Python Parametrelendirilmemiş Oluşturucu

Parametrelendirilmemiş yapıcı, değeri değiştirmek istemediğimizde veya argüman olarak yalnızca self içeren yapıcıyı kullanır. Aşağıdaki örneği düşünün.

Örnek

 class Student: # Constructor - non parameterized def __init__(self): print('This is non parametrized constructor') def show(self,name): print('Hello',name) student = Student() student.show('John') 

Python Parametreli Yapıcı

Parametreli yapıcının birden fazla parametresi vardır. öz . Aşağıdaki örneği düşünün.

Örnek

 class Student: # Constructor - parameterized def __init__(self, name): print('This is parametrized constructor') self.name = name def show(self): print('Hello',self.name) student = Student('John') student.show() 

Çıktı:

 This is parametrized constructor Hello John 

Python Varsayılan Yapıcı

Yapıcıyı sınıfa dahil etmediğimizde veya onu bildirmeyi unuttuğumuzda, bu varsayılan kurucu olur. Herhangi bir görevi gerçekleştirmez ancak nesneleri başlatır. Aşağıdaki örneği düşünün.

Örnek

 class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display() 

Çıktı:

 101 Joseph 

Tek Sınıfta Birden Fazla Yapıcı

Başka bir senaryoya bakalım, sınıfta aynı iki kurucuyu bildirirsek ne olur?

Örnek

 class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student() 

Çıktı:

 The Second Constructor 

Yukarıdaki kodda nesne st ikinci kurucu olarak adlandırılır, oysa her ikisi de aynı konfigürasyona sahiptir. İlk yönteme erişilemiyor. st nesne. Dahili olarak, sınıfın birden fazla kurucusu varsa, sınıfın nesnesi her zaman son kurucuyu çağıracaktır.

Not: Python'da yapıcının aşırı yüklenmesine izin verilmez.

Python yerleşik sınıf işlevleri

Sınıfta tanımlanan yerleşik işlevler aşağıdaki tabloda açıklanmıştır.

SN İşlev Tanım
1 getattr(nesne, ad, varsayılan) Nesnenin niteliğine erişmek için kullanılır.
2 setattr(nesne, ad, değer) Bir nesnenin belirli bir özelliğine belirli bir değer ayarlamak için kullanılır.
3 delattr(obj, ad) Belirli bir özelliği silmek için kullanılır.
4 hasattr(obj, name) Nesne belirli bir öznitelik içeriyorsa true değerini döndürür.

Örnek

 class Student: def __init__(self, name, id, age): self.name = name self.id = id self.age = age # creates the object of the class Student s = Student('John', 101, 22) # prints the attribute name of the object s print(getattr(s, 'name')) # reset the value of attribute age to 23 setattr(s, 'age', 23) # prints the modified value of age print(getattr(s, 'age')) # prints true if the student contains the attribute with name id print(hasattr(s, 'id')) # deletes the attribute age delattr(s, 'age') # this will give an error since the attribute age has been deleted print(s.age) 

Çıktı:

 John 23 True AttributeError: 'Student' object has no attribute 'age' 

Yerleşik sınıf özellikleri

Python sınıfı, diğer niteliklerin yanı sıra, sınıf hakkında bilgi sağlayan bazı yerleşik sınıf niteliklerini de içerir.

Yerleşik sınıf nitelikleri aşağıdaki tabloda verilmiştir.

SN Bağlanmak Tanım
1 __sözde__ Sınıf ad alanıyla ilgili bilgileri içeren sözlüğü sağlar.
2 __belge__ Sınıf belgelerine sahip bir dize içerir
3 __isim__ Sınıf adına erişmek için kullanılır.
4 __modül__ Bu sınıfın tanımlandığı modüle erişmek için kullanılır.
5 __üsler__ Tüm temel sınıfları içeren bir Tuple içerir.

Örnek

 class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age def display_details(self): print('Name:%s, ID:%d, age:%d'%(self.name,self.id)) s = Student('John',101,22) print(s.__doc__) print(s.__dict__) print(s.__module__) 

Çıktı:

 None {'name': 'John', 'id': 101, 'age': 22} __main__