Использование переменных класса, функции и метода - PullRequest
0 голосов
/ 11 января 2019

Вариант 1:

def ABS(ogh):                     
    print "XYZ is good"    

ABS('jk')

Работает нормально.

Вариант 2:

class A(object):                           
      def ABS(ogh):                     
          print "XYZ is good"    

a=A()                                      
a.ABS('jk')

TypeError: ABS () принимает ровно 1 заданный аргумент 2)

Вопрос 3: -

class A(object):                           
      def ABS(ogh):                     
          print "XYZ is good"    

a=A()                                      
a.ABS()

Этот работает отлично.

Я сомневаюсь, почему я получаю ошибку в Case2 и почему нет требования к переменной при вызове функции / метода (здесь, так как под классом), ABS определен внутри класса A?

1 Ответ

0 голосов
/ 11 января 2019

Когда вы определяете методы внутри класса, python неявно передает ссылку на класс в качестве первого параметра. По обычаю это называется я. Итак, в вашем примере 2 вы получаете TypeError, в которой говорится, что вы дали два аргумента, потому что python передал ссылку на ваш объект класса A, который вы связали с переменной ogh, а затем ваш явно переданный аргумент 'jk' неожиданный .

Используя эти знания, мы можем обновить ваш случай до следующего, что даст ожидаемый результат.

class A(object):                           
      def ABS(self, ogh):                     
          print "XYZ is good"    

a=A()                                      
a.ABS('jk')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...