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.
- Parametreli Oluşturucu
- 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__