我们已经讨论了封装和抽象｡
OP的第三个支柱呢？
这叫继承｡
继承允许新对象继承现有对象的属性｡
所以你可以继承类｡
让我们看一个例子｡
让我们删除前面的代码, 并返回到我们的游戏示例｡
我们想创建一个新的游戏, 我们有不同类型的用户｡
因此, 我们的用户可以是巫师,
也可以是其他人, 也可以是弓箭手, 但所有这些用户都有一些共同的功能, 每个子用户（如巫师､
精灵､ 弓箭手）都有一些共同的共享功能, 但话说回来, 攻击方式可能不同｡
所以使用OP, 我们可以进行继承｡
例如, 假设我们有一个类用户, 该用户将具有登录功能｡
或者sign in方法, 它会再次接收self, 然后我们现在假设这里有一个sign｡
所以, 我们现在就说打印博客｡
而且因为为了玩游戏, 他们必须登录｡
现在, 您可能想知道, ho, ho ho, init方法在哪里？
我们不是应该先运行init方法吗？
当然可以, 但是如果我们没有任何变量或属性要分配给用户, 那么, 在这种情况下,
我们就不需要A方法了.
所以现在, 我们只需要说, 我们不需要用户除了这个登录方法之外没有其他东西｡
现在, 假设我们要创建一组子类, 这样我们就有了一个类向导｡
现在, 我们在这里做一遍这样就不会有一个空的类, 但它仍然允许我们构建它｡
假设我们也有课｡
弓箭手也会通过｡
哦, 我的天
确保这里有括号｡
现在, 事情是这样的｡
理想情况下, 所有这些巫师和弓箭手都是用户｡
好吧, 我知道了
所以我们有用户｡
而且这些用户可以有多个表单｡
他们可以是巫师｡
他们可以成为弓箭手｡
他们可以是食人魔｡
我们游戏中的所有角色｡
但是所有的人, 比如说, 都必须先签入｡
我们如何确保所有这些用户或类也都具有登录权限？
我们可以使用继承｡
我们怎么继承？
其实很容易｡
我们所做的一切都在括号里｡
传递我们要继承的父类｡
假设我在这里做用户｡
现在, 让我们单击此处的“run”｡
没有架子｡
一切都很好｡
顺便说一下, 你看这里的绿色线告诉我缩进不是4的倍数因为在Python中缩进应该是4｡
所以我们可以这么做｡
但我喜欢把它缩小, 这样更容易阅读｡
好吧, 我会的
因此, 让我们在这里实例化一个类｡
我将创建一个向导, 然后说｡
向导并运行该向导类｡
现在, 如果我在这里打印, 我做了, 让我们说打印向导｡
如果我单击“运行”｡
我看到向导对象已创建｡
如果我不登录呢？
我看到了｡
是的, 它确实在那里｡
如果我登录并单击“运行”｡
嘿, 我登录了｡
这很酷吧？
我从用户类继承了这个功能｡
这真的很强大, 因为现在我可以扩展我的向导｡
好吧, 我知道了
假设这个向导有一个init｡
法｡
创建向导时将运行该程序｡
我们会有一个｡
姓名｡
和我们所得到的力量｡
在这里我们将self name赋值给equal name, 然后self. power赋值给equal power｡
让我们再添加一个方法｡
称之为攻击｡
这个攻击方法只会打印一个F字符串, 它会说｡
攻击用的｡
的力量｡
我们先说自我力量吧｡
然后我们要对Archer做同样的事情｡
所以我要复制这个代码｡
贴在这里｡
而弓箭手也会有名字｡
我们可以说它有, 而不是力量.
箭数｡
还有箭数｡
将是它获得的新属性｡
然后攻击会有井, 用箭攻击｡
然后我们就剩下箭了｡
一个箭头离开将只是说箭头的数量, 我们可以做一些有趣的地方, 箭头减少, 因为每次你攻击｡
好吧, 我会的
现在我们有了这个, 让我们把它缩小一点, 这样你就可以看到了｡
你去那里｡
现在我们已经有了这个, 让我们实例化第一个向导｡
有了｡
比如说梅林, 50次幂｡
然后是弓箭手｡
我们将被实例化｡
就像罗宾说的, 我们说500支箭或者100支箭｡
所以现在巫师和弓箭手要有｡
好吧, 他们会有标志的｡
但他们也会有攻击, 但这是他们个人独有的｡
课程｡
它们也会有不同的属性｡
我们来看看｡
如果我是做巫师点｡
先生｡ 的双曲余切值｡
一点｡
现在我们就说｡
进攻｡
让我回头看看｡
我的代码智能｡
我们将看到有一些错误｡
给你
那上面写的是什么｡
未定义的名字self, 因为我忘了括号里的self, 所以你们记得我们总是要给予self, 第一个参数｡
如果我们向下滚动, 我们就会进入向导点, 我们会看到我们有名称, 力量和攻击｡
如果我在这里点击攻击然后逃跑｡
看我用50倍的力量攻击｡
如果我这么做, 弓箭手一个人打点攻击｡
既然如此, 那我就用箭来攻击了｡
左箭头100｡
但这两个都同时具有签到功能｡
这很酷吧？
这就是传承的力量｡
我们要保持代码干燥, 对吧？
我们将它们共享的代码部分抽象出来, 然后根据每个人的需要进行更改｡
例如, 我可以在Wizard上使用与Archer不同的方法和属性,
但也可以使用它们所具有的共享用户的用户功能｡
通过这种方式, 它可以保持代码的有序性和整洁性｡
现在让我们把画面放大, 这样你就能看清楚了｡
现在, 这种继承的想法真的, 真的很强大｡
这里的关键是我们有一个父类和子类｡
现在, 有时候这些子类被称为子类或派生类, 因为它们是用户的子类或从用户类派生的｡
让我们在下一个视频中进一步探讨这个主题｡