Understanding Python Classes

- 1. Understanding Python Classes
- 2. Dynamic Class Creation
- 3. Invisible Metaclasses In Python
- 4. Metaclasses In Python
- 5. namespace['attr'] = 1
- 6. Logging Namespace
- 7. Meta Classes Without Type
- 8. More Accurate Meta Classes Without Type
- 9. Run Methods Order In Python
- 10. Run Methods Order In Python With More Explanation
- 11. Register Classes in Python
- 12. Singleton in Python
- 13. Modeling a Class with a Metaclass
- 14. Define Method If Condition True
Understanding Python Classes
Python’da her şey bir nesnedir ve her nesnenin bir tipi vardır. Bu kural primitifler için geçerli olduğu gibi sınıfların kendisi için de geçerlidir. type() fonksiyonu veya .__class__ niteliği herhangi bir nesnenin tipini döndürür; ikisi her zaman aynı sonucu verir.
class Example:
attr = 1
def method(self):
return "method"
print(f"{type(44)=}") # type(44)=<class 'int'>
print(f"{type('hello')=}") # type('hello')=<class 'str'>
print(f"{type(())=}") # type(())=<class 'tuple'>
print(f"{type([])=}") # type([])=<class 'list'>
print(f"{Example.__class__=}") # <class 'type'>
print(f"{type(Example)=}") # <class 'type'>
print(f"{type(type(type))=}") # <class 'type'>
print(f"{Example().__class__=}") # <class '__main__.Example'>
assert isinstance(Example, type)
assert isinstance(Example(), Example)Çıktı Ne Söylüyor?
İlk dört satır beklenen şeyi gösteriyor: 44 bir int, 'hello' bir str.
Asıl ilginç kısım ortadaki üç satırdır:
Example.__class__→<class 'type'>—Examplesınıfının kendisitype’ın bir örneğidir. Sınıflar da birer nesnedir; bu nesnelerin tipitype’tır.type(Example)→ aynı sonuç;type()ile.__class__kullanımı eşdeğerdir.type(type(type))→ hâlâ<class 'type'>—typekendi metaclass’ıdır; kendisinin tipi de yine kendisidir.
Son satır bunu tamamlar: Example().__class__ → <class '__main__.Example'>. Sınıftan oluşturulan bir örnek, tipi olarak kendi sınıfını döndürür — bu da sıradan nesnelerle aynı mantıktır.
assert Satırları
assert isinstance(Example, type) # Sınıflar type'ın birer örneğidir
assert isinstance(Example(), Example) # Örnekler kendi sınıflarının birer örneğidirBu iki kural Python nesne modelinin temelidir. type metaclass hiyerarşisinin zirvesindedir; tüm sınıflar —farkında olsak da olmasak da— type’ın birer örneğidir.
Hakan Çelik
