打印时不使用继承类的新行

2024-09-30 08:36:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在学习python,并在此过程中编写简单的代码。 重写派生类中的print方法,是否可以在同一行中打印两个类,而不更改基类?
i、 我想要pointA.print()打印 “x = 10 and y = 10 and z = 10”;不是x = 10 and y = 10 and z = 10

我知道在C#中,这很容易做到,因为WriteLine方法以新行开始(而不是以新行结束),因此Write方法实现了我所期望的

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def print(self):
        print(f"x = {self.x} and y = {self.y}")


class PointWithZAxis(Point):
    def __init__(self, x, y, z):
        Point.__init__(self, x, y)
        self.z = z

    def print(self):
        Point.print(self)
        print(f"and z = {self.z}")


pointA = PointWithZAxis(10, 10, 10)
pointA.print()

Tags: and方法代码selfinit过程def基类
3条回答

end参数添加到print函数可以指定print语句的结尾,因此:

print(..., end='')

默认情况下,它被设置为end='\n',这表示新行

注意命名函数print时要小心,因为它们隐藏了已有的函数,可能会引起混淆

将父类中的打印更改为:

print(f"x = {self.x} and y = {self.y}", end = "")

顺便说一句,我认为覆盖类的__str__方法比创建print()方法更干净。打印对象时会自动调用对象的__str__方法(如:print(object))。然后,代码变为:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"x = {self.x} and y = {self.y}"


class PointWithZAxis(Point):
    def __init__(self, x, y, z):
        Point.__init__(self, x, y)
        self.z = z

    def __str__(self):
        return super().__str__() + f"and z = {self.z}"


pointA = PointWithZAxis(10, 10, 10)
print(pointA)

您可以将end=”“添加到打印

print("something", end="")

相关问题 更多 >

    热门问题