В классе "Собака", если я инициализировать, какАргументы функции родительского объекта
self.print_func = print_func
показано ниже
class Pet(object):
def __init__(self, name, print_func):
self.name = name
self.print_func = print_func
class Dog(Pet):
def __init__(self, name, print_func):
Pet.name = name
self.print_func = print_func
def print_name(self):
self.print_func(self.name)
def print_string(str):
print str
когда я
j.print_name()
все в порядке.
Но если я инициализировать класс собаки, как
Pet.print_func = print_fun
т.е.
class Dog(Pet):
def __init__(self, name, print_func):
Pet.name = name
Pet.print_func = print_func
def print_name(self):
self.print_func(self.name)
когда я
j.print_name()
Я получаю эту ошибку
TypeError: print_string() takes exactly 1 argument (2 given)
Итак, почему вызов self.print_func во втором случае передает аргумент «self», но не в первом случае?