Bu gönderideki gibi bir fonksiyon üzerinde iki bezeyici kullanmaya çalıştım fakat sıkıntı yaşadım. Sanırım staticmethodun nasıl çalıştığını bilmediğimden oldu. Kodu sorunsuz çalıştırabilirim lütfen bana yorumlarda çözüme nasıl gideceğimi söylemeyin. Amacım sonuca kısa yollardan gitmek ve yeni şeyler kullanmak. Burda staticmethod ve kendi yazdığım bezeyicinin birlikte çalışmama sebebini söyler misiniz ?
Şimdiden teşekkürler.
import requests,json
#Ertugrul-cakici
class Github:
api_url = "https://api.github.com/"
def __init__(self):
self.api_url = "https://api.github.com/"
def cevirici(func):
def ic(username):
veri = func(username)
data = json.loads(veri)
return json.dumps(data,indent=4)
return ic
@cevirici
@staticmethod
def getUser(username):
api_url = Github.api_url
return requests.get(api_url+"users/"+username).text
@cevirici
@staticmethod
def getRepository(username):
api_url = Github.api_url
return requests.get(api_url+"users/"+username+"/repos").text
while True:
secim = input("1- Find User\n2- Get repository\n3- Create repositroy\n4- Exit\nSeçin: ")
if secim == "1":
who = input("Kullanıcı adı: ")
data = Github.getUser(who)
print(data)
elif secim == "2":
print(Github.getRepository(input("Kullanıcı adı: ")))
elif secim == "3":
pass
elif secim == "4":
break
Bezeyicilerde en alttaki bezeyici ilk olarak çağırılır.
getUser metodu üzerinden gidecek olursak, şu anki getUser adlı fonksiyon cevirici bezeyicisinin döndürdüğü ic fonksiyonu. getUser değişkeni geri dönen ic fonksiyonunu saklıyor, ve bu ic fonksiyonu bir staticmethod değil. Siz en son elde edeceğimiz getUser fonksiyonunun bir staticmethod olmasını istiyorsunuz; ama şu anda staticmethod olan değişken cevirici’ye verilen func parametresi, yani şu:
Elinize sağlık hocam. Bu kullanımı öğrenmiştim fakat alttan üste okuduğunu bilmiyordum. Ben staticmethodu çağırıp öyle çeviriciye göndermiş olmuşum o zaman. Şimdi anladım