Python Sınıfa dışarıdan method ekleme ile ilgili bir soru

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()

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

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

Anladım teşşekür ederim

Cevap için teşşekkürler benimde biraz kafam karışmıştı siz diyince