With deyimi (open fonksiyonu ile değil) nasıl kullanılır?

With deyiminin nasıl çalıştığını biliyorum. Ancak çalışma mantığını anlamadım. Kendim kullanmaya çalıştım ama;

>>> class py:
...     def close(self):
...         print("Close çalıştırıldı")
...     def __init__(self, param):
...             pass
...
>>> with py("m"):
...     print("işlemlerim")
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __enter__

Ben bu with deyimini nasıl kullanabilirim?

Bir kaynaktan bulduğum örnek kod:

class controlled_execution:
        def __enter__(self):
            #kodlar
            return thing
        def __exit__(self, type, value, traceback):
            #kodlar

    with controlled_execution() as thing:
         #kodlar

Kaynak : http://effbot.org/zone/python-with-statement.htm

Düzenleme : Sanırsam with deyimini kullanırken belirlediğin sınıfta __enter__ belirlenmiş bir method olmalı.

1 Beğeni

__exit__ da olmalı diye biliyorum. __exit__ yazmayınca hata vermiyor mu acaba?

1 Beğeni

with deyimini sadece open() ile kullandığımdan fazla bilmiyorum :slight_smile: Oradaki hata mesajını okuyunca öyle olduğunu düşündüm. Sizin dediğiniz de doğru olabiliir.