Общая функция Lisp Возврат против побочного эффекта [дубликат]

Этот пример поможет вам сразу запомнить *args, **kwargs и даже super и наследование в Python.

class base(object):
    def __init__(self, base_param):
        self.base_param = base_param


class child1(base): # inherited from base class
    def __init__(self, child_param, *args) # *args for non-keyword args
        self.child_param = child_param
        super(child1, self).__init__(*args) # call __init__ of the base class and initialize it with a NON-KEYWORD arg

class child2(base):
    def __init__(self, child_param, **kwargs):
        self.child_param = child_param
        super(child2, self).__init__(**kwargs) # call __init__ of the base class and initialize it with a KEYWORD arg

c1 = child1(1,0)
c2 = child2(1,base_param=0)
print c1.base_param # 0
print c1.child_param # 1
print c2.base_param # 0
print c2.child_param # 1
14
задан Rainer Joswig 1 March 2010 в 00:27
поделиться

1 ответ

Интерпретатор всегда выводит значение последнего выражения. print также возвращает параметр как значение, "Hi!" в вашем случае. Вот почему вы видите это дважды.

(print "Hi!") 

даст тот же результат.

14
ответ дан Nick Dandoulakis 27 August 2018 в 01:57
поделиться