首页 > 解决方案 > 通过数据隐藏进行封装在 Python 中究竟是如何工作的?初学者

问题描述

我正在介绍关于类多态性的 Python 部分,特别是封装和数据隐藏。

这种封装的示例是:

class Car:

    __maxspeed = 0
    __name = ""

    def __init__(self):
        self.__maxspeed = 200
        self.__name = "Corolla"

    def drive(self):
        print("Max speed is: " + str(self.__maxspeed))

    def setMaxSpeed(self,speed):
        self.__maxspeed = speed

car_a = Car()
car_a.drive()
car_a.setMaxSpeed(320)
car_a.drive()

这条线car_a.drive()将我们引向print("Max speed is: " + str(self.__maxspeed)). 这个特定的价值self__maxspeed来自哪里,为什么?

从输出中,我看到它是 200。输出car_a.setMaxSpeed(320)是 320。所以这里的问题与 320 相同。最后,__maxspeed = 0and的功能是__nane = ""什么?

很抱歉提出了广泛的问题。我是 Python 新手,这些例子让我很困惑。我非常感谢所有的帮助和时间。

标签: pythonpolymorphismencapsulation

解决方案


这个特定的 self__maxspeed 的值(200)来自哪里,为什么?

它来自__init__方法,当您调用时调用Car()

self.__maxspeed = 200

任何时候你创建一个Car它都会有maxspeed200,直到你把它设置为别的东西。

car_a.setMaxSpeed(320) 的输出是 320。所以这里的问题与 320 相同。

这是setMaxSpeed功能:

def setMaxSpeed(self,speed):
    self.__maxspeed = speed

如您所见,它将您传递的任何内容作为参数 (320) 并设置self.__maxspeed为它。没什么太神秘的。现在Car将有maxspeed320 的值,直到您将其设置为其他值。

最后,__maxspeed = 0 和 __name = "" 的作用是什么

它们没有任何功能。也就是说,您的代码从不将它们用于任何事情,因此它们的存在是错误的,或者您有一些其他代码可以对它们执行某些操作,但是根据您提供的代码,它们是无用的,您可以删除他们没有不良影响。


推荐阅读