从覆盖python类继承打印的额外空间

时间:2017-04-29 12:19:55

标签: python inheritance override

以下是代码:

class Parent(object):
    def __init__(self, last_name, eye_color):
        self.last_name = last_name
        self.eye_color = eye_color

    def show_info(self):
        print("The last_name -- " + self.last_name)
        print("The eye_color -- " + self.eye_color)

class Child(Parent):
    def __init__(self, last_name, eye_color, num_toys):
        Parent.__init__(self, last_name, eye_color) ##need self here
        self.num_toys = num_toys

    def show_info(self):
        print("The eye_color -- " + self.eye_color)
        print("The eye_color -- " + self.eye_color)
        print("The num_toys -- " , self.num_toys)
flint = Child("Fan", "Black", 0)
print(flint.eye_color)
flint.show_info()

但是当flint.show_info()被调用时,这就是输出:

Black
The eye_color --    Black
The eye_color -- Black
The num_toys --  0

last_name的额外空间来自哪里? 如果从Child中删除show_info,则额外的空间将消失。我正在使用python 3.5

1 个答案:

答案 0 :(得分:1)

显然,你在那个位置有一个文字制表符(即你按TAB而不是SPACE):

    def show_info(self):
        print("The eye_color --<<<LITERAL TAB CHARACTER>>>" + self.eye_color)
        print("The eye_color -- " + self.eye_color)

理想情况下,您应该配置您正在使用的编辑器,以使标签字符和空格可见,这样您就可以轻松识别和识别它们。

此外,Python的最佳做法和样式指南建议不要在源代码中使用制表符。因为它们在视觉上可能与空间字符无法区分(如您的情况),并且可能会前进到广泛不同的制表位值(例如8,4或任何其他奇数值)。