面向对象编程允许我们创建具有自己的方法的对象, 如run｡
和属性｡
属性｡
这是一种向语言添加更多功能并模拟真实的世界的好方法｡
例如, 我们使用为游戏公司工作的想法｡
虽然Python只给了我们几个数据类型, 但我还是创建了一个玩家角色,
现在我的老板很高兴, 因为这个玩家角色可以在整个游戏中使用,
所有其他编码人员所要做的就是用角色的自定义名称和年龄运行这一行｡
因此, OP允许我们编写可重复､ 组织良好且内存效率高的代码｡
对不对？
因为我们只写一次｡
所以如果你想成为一个伟大的开发者, 你需要知道OP, 你需要理解OP,
因为这是你想要组织代码的方式｡
少考虑程序性问题, 多考虑功能性问题｡
将属性之类的数据与方法组合在一起, 以创建能够模拟真实的世界中某些内容的类｡
现在我想向大家展示一个有用的工具｡
我们在玩“玩家点”的时候就看到了｡
我的编辑器向我显示了我可用的属性以及紫色的框, 它们是我可用的方法｡
你马上就会看到我有一个名字和运行, 但我有所有这些其他的, 我得到了默认｡
这些都是Dunder或魔术方法, 我们会讲到的.
但这里的关键是, 如果我执行help之类的操作, 这是一个新函数, 你们可能以前没见过,
我们把它注释掉.
如果我单击“运行”｡
我实际上得到的是, 物体的整个蓝图｡
如果我列个单子｡
然后单击“Run（运行）”｡
它再次展示了它所拥有的蓝图｡
这是一个很好的方法来查看一些Python数据类型的类蓝图｡
这是我们以后要讨论的问题｡
但我想回到这个玩家角色｡
现在, 在这里, 我们可以创建属性｡
而属性是动态的数据片段｡
也就是说, 当我们实例化一个对象时, 它们对于该特定对象是唯一的, 比如name和age｡
我们必须使用self关键字来确保它是动态的｡
然而, 还有一个叫做类对象属性的东西, 它看起来像这样｡
假设我们有一个玩家角色, 他们必须, 假设, 是付费会员｡
为了玩这个游戏, 你必须已经玩过或者你必须已经获得会员资格｡
所以让我们有一个平等的成员资格｡
是的｡
属性｡
现在, 与这个不同的是, 你可以看到它与我们的方法在同一行｡
这叫做类对象｡
属性｡
在类中, 对象属性, 与这些常规类属性不同, 因为它不是动态的,
而是静态的.
所以如果我点击｡
在这里运行, 我们要确保我们打印的东西｡
所以让我们打印播放器到｡
然后单击“Run（运行）”｡
我去拿播放器, 太好了｡
但如果我做了点会员｡
然后单击“Run（运行）”｡
你看那个｡
如果是参与人1, 我就得到2.
也一样｡
然后单击“Run（运行）”｡
我又变真了｡
所以所有玩家的成员资格都设置为true｡
但这不是动态的｡
它是一个类对象属性, 这意味着它是这个类的一个实际属性｡
这是我们在没有变化的时候使用的东西｡
这将是真的, 并存在于所有对象中, 所以你不能真正修改它｡
只是我们实例化的所有对象都可以访问它｡
因此, 这不会在实例之间发生变化｡
我们也可以在这里或者在课程蓝图的任何地方使用它｡
事实上, 例如, 假设我们要检查if｡
成员资格已存在, 因此我们正在检查成员资格是否为真｡
我的意思是, 它一直是｡
所以这有点多余, 但是在这里｡
我只能说, 如果成员是真的｡
然后我会指定姓名和年龄｡
但是为了获得成员资格, 我必须做self, 因为记住, self指的是这个玩家角色,
所以如果我运行这个.
一切正常｡
如果我做了一号玩家.
这个还能用｡
或者我可以用实际的玩家角色来引用这个｡
所以玩家角色成员资格｡
如果我在这里单击运行｡
这也是因为它是类对象属性｡
如果我｡
去哪儿？
也许是在逃跑｡
让我们改变一下｡
呼和｡
又喊｡
它会想跑的｡
让我们删除这条线｡
要打印了｡
一个F字符串, 表示My name is｡
并给予它起个名字｡
你觉得这样行吗？
让我们来试试吧｡
让我们喊吧｡
确保我们运行该方法, 然后再次单击“喊”｡
如果我单击“运行”｡
我得到的空气名称没有在第11行定义｡
如果我转到第11行, name没有定义｡
为什么会这样呢？
嗯, 因为我们还没有使用自我｡
那么我们来做self. name｡
如果我点击运行｡
你去那里｡
我叫汤姆｡
我叫辛迪｡
好吧, 我会的
太棒了｡
我可以使用self, 因为我把它作为第一个参数传入这里所有的方法都接收self的第一个参数, 这样我们就可以使用它们了.
但是如果我点击运行, 我可以只做玩家角色点名称吗？
我得到了一个空中游戏, 一个角色没有属性名称｡
为什么呢？
因为name不是类对象属性｡
它实际上并不是玩家角色的属性｡
不, 它是在我们的构造函数中定义的, 我们的init函数｡
所以这是一个小陷阱, 你必须习惯它｡
类对象属性是指在不同实例之间不会发生变化的属性, 或者类属性是指动态的､
特定于每个类对象的属性｡
我们访问它们的方式是不同的, 我们可以像这样访问成员资格｡
但是为了访问类中任何地方的名字或年龄, 我们必须使用self名称｡
这就是为什么每次我们在类中创建一个方法时, 即使我在这里创建了一个新的方法,
假设这个新的方法要被运行.
再一次, 我必须使用self作为参数, 然后添加任何其他的参数｡
还有这里
作为第二个参数, 这样当我单击时, 我们就说运行｡
我在这一关过了｡
你好, 我是
这样的争论｡
我知道这有点多, 但希望你能开始遵守课堂规则｡
一旦你记住了这些规则, 那么事情就变得越来越容易了｡
但我们会在下一个视频中再多练习一下｡