ООП Помогите!Отсутствующее требование: сам - PullRequest
0 голосов
/ 14 июня 2019

Привет всем, это мой первый пост.В настоящее время я пытаюсь изучить ООП Python.Что я сделал здесь, так это построил воображаемую печатную машину, используя ООП в Python.Но всякий раз, когда я запускаю аппарат или пытаюсь вставить чернила и т. Д.

я получаю эту ошибку:

TypeError murekkepDoldur() missing 1 required positional argument: 'self'

Это мой код:

class Makine : #This is where i def my printing machine class#

    def __init__(self):
        self.murekkep=100 #this means ink#
        self.şarj=100  #this means charge
        self.devir=0    #this means how many turns did machine worked#
        self.mevcutDergi=[]  #this means list of printed magazines#

    def calis(self): #this means the work function for machine#
        if self.murekkep>=10 and self.şarj>=5:
            print("Makine çalışıyor.")
            self.murekkep-=10
            self.şarj-=5
            self.devir+=1
        elif self.murekkep<10 :
            print("Yetersiz mürekkep!")
        elif self.şarj<5 :
            print("Yetersiz şarj!")
        elif self.devir==10 :
            a=input()
            print("Yeni dergi çıktı!\nDerginin adı : "+ a)
            mevcutDergi.append(a)
            self.devir = 0

    def murekkepDoldur(self):  #this means add ink function#
        if self.murekkep<=80:
            self.murekkep+=20
            print("Mürekkep dolduruldu!\nYeni mürekkep seviyesi yüzde 
",self.murekkep)

    def şarjDoldur(self): #this means charge battery function#
        if self.şarj<=95:
            self.şarj+=5
            print("Şarj dolduruldu!\nYeni şarj seviyesi yüzde 
",self.şarj)

    def mevcutDurum(self):  #this means show status function#
        print("Makinenin murekkebi % ",self.murekkep, 
              "\nMakinenin şarjı % ", self.şarj,
              "\nMakinenin devir sayısı : " ,self.devir,
              "\nMevcut dergiler : ",self.mevcutDergi)
makine1=Makine                    
while True :
    print("-"*30)
    print("Matbaa Makinesi v0.1\n",
          "Makineyi çalıştırmak için->1\n",
          "Murekkep doldurmak için->2\n",
          "Şarj doldurmak için->3\n",
          "Mevcut durumu öğrenmek için->4")
    print("-"*30)
    komut = int(input())
    if komut==1:
        makine1.calis()
    elif komut==2:
        makine1.murekkepDoldur()
    elif komut==3:
        makine1.şarjDoldur()
    elif komut==4:
        makine1.mevcutDurum()
    else :
        print("Hatalı komut girdiniz!")

Спасибо заваша помощь!

1 Ответ

3 голосов
/ 14 июня 2019

Вы должны создать экземпляр класса Makine перед вызовом метода.

Проблема в этой строке:

makine1=Makine                    
while True:

это должно быть:

makine1=Makine()
while True:

Тогда он будет счастлив работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...