我将介绍有关类多态性的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 = 0
和__nane = ""
的作用是什么?
很抱歉提出了广泛的问题。我是Python的新手,这些示例使我感到困惑。我非常感谢所有帮助和时间。
此特定self__maxspeed的值(200)来自何处?为什么?
它来自__init__
方法,当您调用Car()
时会调用该方法:
self.__maxspeed = 200
每次创建Car
时,maxspeed
的值为200,直到您将其设置为其他值。
而car_a.setMaxSpeed(320)的输出是320。所以同样的问题这里是320。
这里是setMaxSpeed
功能:
def setMaxSpeed(self,speed):
self.__maxspeed = speed
如您所见,它将您传递的所有内容作为参数(320)并将其设置为self.__maxspeed
。没什么太神秘的。现在,Car
的maxspeed
将为320,直到您将其设置为其他值。
最后,__ maxspeed = 0和__name =“”的作用是什么
它们没有任何功能。也就是说,您的代码从不将它们用于任何用途,因此,要么它们的存在是一个错误,要么您有一些其他代码对它们有所作为,但是根据您提供的代码,它们是无用的,您可以删除他们没有不良影响。
[__init__()
每当创建任何对象时都被调用。
创建对象后,将自动调用__init__()
。
在这种情况下,__init__()
正在初始化值为[[200的__maxspeed
。然后,使用__maxspeed
功能打印了drive()
的值(为200)。
320
作为值调用了setMaxSpeed()
。在此函数内部,它将320赋给该对象的__maxspeed
变量,该变量的初始值为200。现在,您再次调用drive()
函数以打印__maxspeed
的值,现在它是320
。因此,将打印320。