欢迎回来｡
在上一个视频中, 我们看到我们做了一些大嘘嘘｡
也就是说, 我们把名字和说话方式都写了｡
而现在我们在课堂上付出的努力都被这件事所抵消了｡
我的意思是, 当然, 如果我们实例化一个新对象｡
我们会有我们的运行和发言, 但球员1现在是完全无用的｡
它没有名字和说话｡
上面写着“嘘”
完全没用｡
在Python中, 有公有和私有的概念, 这和我们讨论的抽象有关｡
抽象背后的思想是我们隐藏信息, 只允许访问用户关心的东西｡
好吧, 我知道了
所以理想情况下, 我们不应该访问init｡
理想情况下, 我们不应该,
比如说修改, 运行或修改名字和h, 因为当我们在游戏中创建一个玩家角色时, 希望玩家可以随机改变他们的名字或年龄｡
偷偷进入我们的游戏, 也许只有18岁以上｡
那么我们可以在类中创建一个私有变量吗？
是这样的
有些语言允许我们拥有私有变量, 例如, 在Java这样的语言中｡
实际上, 我可以说一个属性是私有的, 这样我就不能像这样访问和修改它｡
但在Python中, 没有真正的隐私, 没有真正的私有变量｡
那我们怎么解决这个问题
我们要做的就是在名字或者H下面加下划线｡
现在就去
给予有什么特别的力量吗？
不, 这只是一个惯例, 作为程序员,
作为Python程序员, 我们决定, 嘿, 如果我们在代码中看到下划线, 那很可能意味着这应该是一个私有变量｡
所以当我用它说话的时候, 比如下划线的名字, 下划线的H｡
让我们注释掉它｡
如果我单击“运行”｡
我必须运行它因为它现在是一个方法｡
让我们单击“Run”（运行）｡
我的名字叫安德烈, 我已经100岁了｡
这一切都行得通｡
但如果我尝试覆盖这些并单击“运行”｡
哦, 现在, 因为它不再是一个方法, 让我们删除speak, 然后单击run｡
这个还能用｡
这是因为, 就像我说的, 没有真正的私有变量｡
作为程序员, 我们认为下划线意味着您不应该碰它｡
请别碰这个
你仍然可以做坏事, 做这样的事情｡
但我提前告诉你, 如果你强调这不应该被修改, 这应该是私人的｡
这就是我们在Python中实现隐私的方法｡
我们都同意说, 嘿, 让我们保持这个小东西的隐私｡
所以如果你想保持一个方法或者属性的私有性, 你只需要在它前面加一个下划线, 但这并不能保证｡
这个双下划线怎么样？
这是我们很快要讲的, 但它被称为邓德法.
也就是说, 它内置在Python中｡
而且我们通常从不编写自己的Dunder方法｡
我们永远不会写双下划线｡
写这个｡
这些双下划线, 在Python中有很多, 有特殊的意义｡
它们之所以这样命名是因为, 如果你给变量写双下划线,
那你就大错特错了.
您将要覆盖某些内容｡
所以, 这个双下划线也是一个约定,
让人们知道你不应该用每一种数据类型来修改它｡
比如说一个列表｡
如果我做点, 你会看到, 因为你向下滚动｡
你有很多这种愚蠢的方法｡
同样, 我们将要讨论的一些东西, 但这些都是为了让你们知道｡
如果您要执行下划线之类操作, 请不要覆盖这些内容｡
下划线, 我不知道, 医生, 像这样｡
那就糟了｡
别试着修改它并把它分配给5｡
所以这个私有字段的概念对Python来说很重要｡
虽然我们可以覆盖很多东西, 但这是不好的做法｡
但让我们回到抽象的层面｡
我们的想法是将这些代码抽象出来,
尽管可以通过使用私有属性等适当的约定来修改和覆盖这些代码, 但我们能够将这些内容抽象出来, 同时仍然确保用户可能使用的任何内容都不会破坏我们的代码｡
下次见｡
再见, 再见, 再见