проблемма с классом

в данный момент изучаю ООП и пытаюсь выполнить задачу, но при запуске кода:

import collections
class laboras:

    def __init__(self,pradine,abecele,nepasikartojantys,pasikartojantys):
        self.pradine = pradine
        self.abecele = abecele
        self.nepasikartojantys = nepasikartojantys
        self.pasikartojantys = pasikartojantys
    #pradine
    pradine = input('Iveskite bent 10 tarpais atskirtu zodziu seka: ')
    #abecele
    s = sorted(pradine.split(), key=str.lower)
    abecele = ' '.join(map(str,s))
    #nepasikartojantys
    nepasikartoja = list(dict.fromkeys(abecele.split()))
    nepasikartojantys = ' '.join(map(str,nepasikartoja))
    #pasikartojantys
    pradine1 = pradine.split()
    pasikartojantys = collections.Counter(pradine)

    def spausdinimas(self):
        print(self.pradine)
        print(self.abecele)
        print(self.nepasikartojantys)
        print(self.pasikartojantys)

rezultatas = laboras(pradine, abecele, nepasikartojantys, pasikartojantys)
rezultatas.spausdinimas()

получаю ошибку: line 27, in rezultatas = laboras(pradine, abecele, nepasikartojantys, pasikartojantys) NameError: name 'pradine' is not defined


Ответы (1 шт):

Автор решения: void

Если учите пока что, то у вас пока недопонимание общее, что такое класс и прочее. Запомните: написание строчек кода в произвольном порядке структур и с произвольными отступами меняют смысл логики (если упрощенно говорить), а то и ведут к нежелательному поведению. Сравните код, свой и тот, что ниже. Попытайтесь понять, в чем принципиальная разница.

import collections


class Laboras:

    def __init__(self, pradine, abecele, nepasikartojantys, pasikartojantys):
        self.pradine = pradine
        self.abecele = abecele
        self.nepasikartojantys = nepasikartojantys
        self.pasikartojantys = pasikartojantys

    def spausdinimas(self):
        print(self.pradine)
        print(self.abecele)
        print(self.nepasikartojantys)
        print(self.pasikartojantys)


# pradine
pradine = input('Iveskite bent 10 tarpais atskirtu zodziu seka: ')
# abecele
s = sorted(pradine.split(), key=str.lower)
abecele = ' '.join(map(str, s))
# nepasikartojantys
nepasikartoja = list(dict.fromkeys(abecele.split()))
nepasikartojantys = ' '.join(map(str, nepasikartoja))
# pasikartojantys
pradine1 = pradine.split()
pasikartojantys = collections.Counter(pradine)

rezultatas = Laboras(pradine, abecele, nepasikartojantys, pasikartojantys)
rezultatas.spausdinimas()

P.S.переменную pradine1 оставил, но она у вас даже и не используется нигде.

→ Ссылка