Создание метода в классе, который принимает фиктивные аргументы - PullRequest
0 голосов
/ 27 мая 2019

Я новичок в объектно-ориентированном программировании и хочу изучить его подробнее.У меня есть словарь здесь "а", который имеет определенные пары ключ-значение.Так что я хотел бы сделать, это построить метод, который проходит через этот словарь и принимает только те значения, которые имеют свои значения как True

Я попытался создать класс, который принимает значения, у меня есть логика для проверкизначения в dict, но не понимают, как продолжить создание метода из него

a = {"A": True, "B": False, "C": True}

class Check:

    def __init__(self, country, A, B):
         self.country = country
         self.A = A
         self.B = B

    def countrycheck(self):

        Result = {}
        for i in self.country:
            if self.country[i] == True:
                Result.update({i: True})

        return Result 

Я получаю результаты, но не могу сформулировать, чего я на самом деле хочу.Я хочу, чтобы он выполнял что-то вроде этого:

trial = Check(a, b, c)

Итак, выполнение этого должно дать мне dict = {"A": True, "C": True}.Здесь я проверяю значения страны из dict, а также хочу, чтобы аргументы b и c были там.Я пытался их использовать, но это выдает мне эту ошибку - "b не определено"

1 Ответ

1 голос
/ 27 мая 2019

функция init () всегда выполняется при инициализации класса.

Используйте функцию init () для присвоения значений свойствам объекта, илидругие операции, которые необходимо выполнить при создании объекта.в вашем случае A, B в def __init__(self, country, A, B): не имеет смысла

Примечание. Параметр self является ссылкой на текущий экземпляр класса и используется для доступа к переменным, принадлежащим классу.

Методы объекта:

Объекты также могут содержать методы.Методы в объектах - это функции, принадлежащие объекту.

Если вы хотите использовать метод (или атрибут) класса вне определения этого класса, вы сделаете это следующим образом:

trial = Check(a)

trial.countrycheck()

Пример:

class A(object):
    def foo(self):
        print ('Foo')

    def bar(self, argument):
        print ('Bar ', argument)

a = A()
a.foo() #prints 'Foo'
a.bar('Arg!') #prints 'Bar Arg!'

Ваш код должен выглядеть следующим образом:

class Check:
    def __init__(self, country):
         self.country = country

    def countrycheck(self):

        Result = {}
        for i in self.country:
            if self.country[i] == True:
                Result.update({i: True})

        return Result


a = {"A": True, "B": False, "C": True}

trial = Check(a)

print (trial.countrycheck())

Вывод:

{'A': True, 'C': True}
...