Python İle Classlar Ve Fonksiyonlar Arası Erişim
-
Merhaba arkadaşlar pythonda çözemediğim temel bir mesele var.
1. İki farklı class birbirine nasıl erişebilir?
2. İki farklı fonksiyon birbirine nasıl erişebilir?
Aşağıdaki tkinter örneğin çalışmıyor çünkü fonksiyon1 anasayfa class'ına erişemiyor...
import tkinter as tk
def fonksiyon1():
anasayfa.buton.place_forget()
class anasayfa():
tkinter = tk.Tk()
buton = tk.Button(tkinter, text="TBT",command=fonksiyon1())
buton.place(relx=0.01, rely=.01)
tkinter.mainloop()
anasayfa() -
import tkinter as tk class anasayfa: def __init__(self): self.tkinter = tk.Tk() self.buton = tk.Button(self.tkinter, text="TBT", command=self.fonksiyon1) self.buton.place(relx=0.01, rely=.01) self.tkinter.mainloop() def fonksiyon1(self): self.buton.place_forget() anasayfa()
-
YekteranBaymedir bunu yazdı
import tkinter as tk class anasayfa: def __init__(self): self.tkinter = tk.Tk() self.buton = tk.Button(self.tkinter, text="TBT", command=self.fonksiyon1) self.buton.place(relx=0.01, rely=.01) self.tkinter.mainloop() def fonksiyon1(self): self.buton.place_forget() anasayfa()
adamsın hocam burdan çözerim ben gerisini eyvallah.
-
import tkinter as tk class anasayfa(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.buton = tk.Button( text="TBT",command=self.fonksiyon1) self.buton.place(relx=0.01, rely=.01) def fonksiyon1(self): self.buton.place_forget() a=anasayfa() a.mainloop()
-
YekteranBaymedir bunu yazdı
import tkinter as tk class anasayfa: def __init__(self): self.tkinter = tk.Tk() self.buton = tk.Button(self.tkinter, text="TBT", command=self.fonksiyon1) self.buton.place(relx=0.01, rely=.01) self.tkinter.mainloop() def fonksiyon1(self): self.buton.place_forget() anasayfa()
@SENAR1STBildiğim kadarıyla fonksiyon ve class içerisinde geçen değişkenler memory üzerinde(?) farklı şekilde tutulur. Bir fonksiyon içerisinde kullanabileceğin değerler genellikle __locals__ içerisinde tüm kod parçacığında kullanabileceğin değişkenler ise __globals__ içerisinde bulunur. Eğer fonksiyon içerisindeki bir değişkene erişmek istersen öncelikle o değişkeni global olarak tanımlayıp memory'e o şekilde yazmalısın.
Örnek:
Daftın vermiş olduğu örnek kısmında da class içerisindeki değişkenlere örnekleme yaptıktan sonra erişebilirsin.
Örnek:def fonksiyon1(arabamarkasi): global araba araba = "BMW" # Artık global üzerinden erişilebilir. def fonksiyon2(kimeait): print(f"{araba} {kimeait}'e aittir") class Araba: def __init__(self): self.tekersayisi = 4 self.marka = None self.fiyat = 0 @property def tekerazalt(self): self.tekersayisi -= 1 @property def __str__(self): return f"Araba markası: {self.marka}, teker sayisi: {self.tekersayisi}, fiyatı: {self.fiyat}" ilkaraba = Araba() ilkaraba.marka = "BMW" ilkaraba.fiyat = "100.000" ikinciaraba = Araba() ikinciaraba.marka = "Seat" ikinciaraba.fiyat= "85.000" print(ilkaraba) >> Araba markası: BMW, teker sayisi: 4, fiyatı: 100.000 # Kaza yaptık teker eksildi diyelim. ikinciaraba.tekerazalt() print(ikinciaraba)
>> Araba markası: Seat, teker sayisi: 3, fiyatı: 85.000