在 「狗」 類,如果我初始化如下圖所示參數給對象的父的功能
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
self.print_func = print_func
當我做
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」參數,但不是在第一種情況下?