在 Python 中,通过数据隐藏进行封装究竟是如何工作的?初学者
How exactly does Encapsulation via Data Hiding Work in Python? Beginner
我将在 Python 中介绍 Class 多态性,特别是封装和数据隐藏。
这种封装的例子是:
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
和 [=17 的功能是什么=]?
抱歉,这个问题太广泛了。我是 Python 的新手,这些例子让我很困惑。我非常感谢所有的帮助和时间。
Where does the value (200) for this specific self__maxspeed come from and
why?
它来自__init__
方法,当你调用Car()
时调用该方法:
self.__maxspeed = 200
任何时候你创建一个 Car
它都会有一个 maxspeed
200 直到你将它设置为其他东西。
And the output of car_a.setMaxSpeed(320) is 320. So the same question
here with 320.
这是 setMaxSpeed
函数:
def setMaxSpeed(self,speed):
self.__maxspeed = speed
如您所见,它会将您传递的任何内容作为参数 (320) 并为其设置 self.__maxspeed
。没什么太神秘的。 Car
现在的 maxspeed
为 320,除非您将其设置为其他值。
lastly, what's the function of __maxspeed = 0 and __name = ""
它们没有任何作用。也就是说,您的代码从不使用它们做任何事情,所以它们的存在是错误的,或者您有一些其他代码可以对它们执行某些操作,但是根据您提供的代码,它们是无用的,您可以删除他们没有任何不良影响。
__init__()
每次创建任何对象时都会调用。
创建对象后,自动调用__init__()
。
在这种情况下,__init__()
正在初始化
__maxspeed
的值为 200 。然后,您使用 drive()
函数 .
打印了 __maxspeed
的值(即 200 )
稍后,您使用 320 作为值调用了 setMaxSpeed()
。在这个函数内部,它将 320 分配给该对象的 __maxspeed
变量,该对象的初始值是 200。
现在,您再次调用了 drive()
函数来打印 __maxspeed
的值,现在是 320 。因此,打印 320。
我将在 Python 中介绍 Class 多态性,特别是封装和数据隐藏。
这种封装的例子是:
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
和 [=17 的功能是什么=]?
抱歉,这个问题太广泛了。我是 Python 的新手,这些例子让我很困惑。我非常感谢所有的帮助和时间。
Where does the value (200) for this specific self__maxspeed come from and why?
它来自__init__
方法,当你调用Car()
时调用该方法:
self.__maxspeed = 200
任何时候你创建一个 Car
它都会有一个 maxspeed
200 直到你将它设置为其他东西。
And the output of car_a.setMaxSpeed(320) is 320. So the same question here with 320.
这是 setMaxSpeed
函数:
def setMaxSpeed(self,speed):
self.__maxspeed = speed
如您所见,它会将您传递的任何内容作为参数 (320) 并为其设置 self.__maxspeed
。没什么太神秘的。 Car
现在的 maxspeed
为 320,除非您将其设置为其他值。
lastly, what's the function of __maxspeed = 0 and __name = ""
它们没有任何作用。也就是说,您的代码从不使用它们做任何事情,所以它们的存在是错误的,或者您有一些其他代码可以对它们执行某些操作,但是根据您提供的代码,它们是无用的,您可以删除他们没有任何不良影响。
__init__()
每次创建任何对象时都会调用。
创建对象后,自动调用__init__()
。
在这种情况下,__init__()
正在初始化
__maxspeed
的值为 200 。然后,您使用 drive()
函数 .
__maxspeed
的值(即 200 )
稍后,您使用 320 作为值调用了 setMaxSpeed()
。在这个函数内部,它将 320 分配给该对象的 __maxspeed
变量,该对象的初始值是 200。
现在,您再次调用了 drive()
函数来打印 __maxspeed
的值,现在是 320 。因此,打印 320。