Modül Oluşturma Hakkında

Merhabalar,

Bir modül yaptığımızı ve aktardığımızı düşünelim :

from modül import modül

Altına şunları yazalım :

modül.isims=  "Ahmet,Mehmet"

Ve modülün içinde şunlar yazsın:

def isimler():
    if isims == "Ahmet,Mehmet":
    print("Bunlar kayıtlı isimler!")

Ve program hatasız çalışsın:

Bunlar kayıtlı isimler!

Yani yapmak istediğim “modül.isimler” yazdığımız zaman “isimler” fonksiyonunun çalışması.Bunu nasıl yapacağız?

fonksiyonu çağırmadığından çalışmaz

Peki ya doğrusu nasıl olacak?

Modül:

class Module():
	def isimler(isim,soyisim):
		print(f"İsim : {isim}\n Soyisim:{soyisim}")

İmport:

from translate import Module

Module.isimler(isim="Ahmet",soyisim="worm")

Bu şekilde olmayacakmı,peki nasıl olması gerekiyor ?

1 Beğeni

girintileme hatası var hatasız çalışmaz

modül dosyası;

def sorgulama():
    print("modül çalıştı")

modül dosyasının adı “moduller.py” olacak.

ana dosya;

import moduller

moduller.sorgulama()

ana dosya ile modül dosyası aynı dizinde olmalıdır.

bunu örnek olarak düşünün siz daha farklı detaylandırabilirsiniz.


Bir tık geliştirilmiş bir hale getirelim. Örneğin modüllerinizi ayrı bir klasör içerisinde tutmak istiyorsunuz o zaman da şöyle işliyor.

Bir klasör oluşturun ve adına fonksiyonlar diyelim. Ardından bu klasörün içerisinde üstte verdiğim moduller.py dosyasını koyalım. Bu işlemden sonra ana dosyaya gittiğimiz de modülü çağırmak için import satırını şu şekilde düzenleyeceğiz.

from fonksiyonlar import moduller

eğer modülleriniz bir klasör içerisinde farklı farklı klasörler ile birbirinden ayrılmış ise onu da şöyle düzenleyeceğiz. Farz edelim ki fonksiyonlar klasörünün içerisinde first adında bir klasör var ve moduller.py dosyamız bu klasör içerisinde. O zaman kod şu şekil düzenlenir.

from fonksiyonlar.first import moduller


Tek bir ana dosya içerisinde birbirine girmiş uzun satırlardan oluşan kod yapılarını kullanarak okunabilirliği zorlaştırmak ve karmaşıklaştırmak yerine bu fonksiyonları modül kullanarak import ederek çalışmasını istediğimiz yerde çalıştırdığımız zaman daha sağlıklı bir yapı oluşturmuş oluruz. Ayrıca çalışmasını istediğimiz fonksiyonların modül olarak ayrılması daha sonra bu fonksiyonlar üzerinde düzenleme yapacağımız zaman işimizin daha kolay olmasına olanak sağlar.

1 Beğeni

Burada @dildeolupbiten 'in anlattığı çok güzel şeyler var. Onları da okuyarak daha detaylı şeyler hakkında fikir sahibi olabilirsin.

1 Beğeni

Burada niye iki tane modül var?

Daha fonksiyonu çağırmadınız ki, nasıl çalışacak?

Bence bunu istemiyorsunuz ama bunun gibi bir özellik modül seviyesinde kullanılan __getattr__ fonksiyonu ile uygulanabilir diye tahmin ediyorum.

Tam olarak ne yapmak istiyorsunuz ki? Niye böyle bir şeye ihtiyaç duyuyorsunuz?

from modül derken klasör belirtmiş olabilir diye düşünüyorum.

1 Beğeni

Evet

Eğer çalıştaysa.Bende nasıl olacağını soruyorum zaten

çalışmaz yani sade bir fonksiyon nesnesini öyle çağıramazsınız.

Teşekkürler,neyin nasıl yapılacağını sordum ve en temel cevabı siz verdiniz.

1 Beğeni
class MyClass:
    __names = ['Emre', 'Gencay', 'Ekrem']

    def get_names(self):
        print('Isimler fonksiyonu calisti!')
        return self.__names
    
    def set_names(self, new_name):
        self.__names = new_name
        print('Yeni isimler:', new_name)

    names = property(get_names, set_names)
In [13]: c = MyClass()                                                                                                                                                   

In [14]: c.names                                                                                                                                                         
Isimler fonksiyonu calisti!
Out[14]: ['Emre', 'Gencay', 'Ekrem']

In [15]: c.names = 12                                                                                                                                                    
Yeni isimler: 12

In [16]: c.names                                                                                                                                                         
Isimler fonksiyonu calisti!
Out[16]: 12

@throwaway1

1 Beğeni