def method1(self):
print("Arama yapılıyor.")
self.virussayisi = 0
class sinif:
virussayisi = 10
def virustemizleme(self):
sinif.method1 = method1
sinif.method1()
bilgisayar = sinif()
print(bilgisayar.virustemizleme())
Selamlar herkese ben burada sınıfın dışarısından sınıfa bir method ekleyerek virüs sayısını 0 yapmaya
calistim.Ama hata veriyor.
Hata kodu
method1() missing 1 required positional argument: 'self'
Bir sınıfa sınıf dışından böyle method ekleyemez miyiz?Neden hata aldım acaba?Hatayı nasıl çözebilirim.Teşşekkürler
import time
class sinif:
virus = input("virüs olduğunu düşündüğümüz dosya indireceksin kabul ediyor musun? (1)Evet (2)Hayır : ")
def virus_var(self):
while 1:
if self.virus == '1':
print("İndiriliyor...")
time.sleep(3)
print("Tehlikeli bir virüs Tespit edildi!")
self.virus_tarama()
break
elif self.virus == '2':
print("çıkılıyor...")
break
else:
print("Yalnızca (1) ve (2) tuşlarını kullanabilirsiniz")
break
def virus_tarama(self):
print("Makineniz taranıyor...")
time.sleep(8)
self.virusler = int(input("(0-50) arası virüs sayısı belirtin : "))
if 0 < self.virusler < 50:
print("Virüs/ler Temizleniyor....")
time.sleep(10)
print("Temizlendi.")
elif self.virusler == 0:
self.virus_sonuc()
def virus_sonuc(self):
print("Herhangi bir bulguya rastlanılmadı")
pc= sinif()
pc.virus_var()
Berke_Balci:
sinif.method1 = method1
Bu şekilde sonradan eklenen nitelikler metod olarak değil, normal fonksiyon olarak çalışır. Bu yüzden self
parametresi otomatik olarak gönderilmiyor. Fonksiyonu method1(self)
şeklinde çağırabilirsiniz ama method1
’i normal bir metod haline getirmemeniz için de bir sebep göremiyorum.
Son cümlenizde ne kastettiniz hocam tam anlayamadım.
Yerine method1(self)
yazılabilir.
method1
fonksiyonu, sınıf tanımına dahil edilerek normal bir metod haline de getirilebilir.
tamamdır anladım teşşekür ederim
Cevabınız için teşşekkürler
1 Beğeni
aib
Mart 20, 2021, 6:16ös
9
Olmus.
Metod sinif uzerinden cagrilmis.
File "a.py", line 9, in virustemizleme
sinif.method1()
TypeError: method1() missing 1 required positional argument: 'self'
Metodlari boyle cagirmiyoruz:
File "a.py", line 9, in virustemizleme
sinif.virustemizleme()
TypeError: virustemizleme() missing 1 required positional argument: 'self'
obje (self) argumaniyla veya obje (self) uzerinden cagiriyoruz.
1 Beğeni
Kodu okurken kafam karışmış, sinif.method1
'leri self.method1
gibi görüp cevap yazmışım. Kodun şu hali çalışıyor:
def method1(self):
print("Arama yapılıyor.")
self.virussayisi = 0
class sinif:
virussayisi = 10
def virustemizleme(self):
sinif.method1 = method1
self.method1()
bilgisayar = sinif()
print(bilgisayar.virustemizleme())
1 Beğeni
Cevap için teşşekkürler benimde biraz kafam karışmıştı siz diyince