narnehc 2年前

修改理由:

用词错误

详细描述:

我感觉在对robot类的解释中的第三段(由此,我们可以推测出······,这一行)的最后一句“也请记住一个与类对象同名的对象变量将会把这个类变量屏蔽。”(原文)中的“类对象”应该改为类变量,这里提到的population应该是个变量,同样,下一个自然段也出现了相似错误,但我不确定该怎么改,“我们还可以通过 self.__class__.population 来访问这个类对象”(原文)这里的“类对象”也该改为“类变量”,“因为每一个对象都通过 self.__class__ 属性指向自己的类。”这里的表述不知道有没有问题,

相关信息:


此投稿状态为 未处理

标题修改:

+ 面向对象编程

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
234234
235235这将是一个非常长的解释,但却能够帮助我们很自然地认识类变量和对象变量。这里,  `population` 属于  `Robot` 类,因此是一个类变量。  `name` 变量属于每一个个体(使用 `self` 来指向)因此是一个对象变量。
236236
237 由此,我们可以推测出 `population` 类变量应当用  `Robot.population` 来访问,而非 `self.population` ;可以推测在对象的方法之中,对象变量 `name` 应当使用  `self.name` 来访问。请记住这个类变量和对象变量之间这一个简单的区别。也请记住一个与类对象同名的对象变量将会把这个类变量屏蔽。
238 
239 除了 `Robot.population` 之外,我们还可以通过 `self.__class__.population` 来访问这个类对象,因为每一个对象都通过
 237由此,我们可以推测出 `population` 类变量应当用  `Robot.population` 来访问,而非 `self.population` ;可以推测在对象的方法之中,对象变量 `name` 应当使用  `self.name` 来访问。请记住这个类变量和对象变量之间这一个简单的区别。也请记住一个与类变量同名的对象变量将会把这个类变量屏蔽。
 238
 239除了 `Robot.population` 之外,我们还可以通过 `self.__class__.population` 来访问这个类变量,因为每一个对象都通过
240240`self.__class__` 属性指向自己的类。
241241
242242`how_many` 实际上是一个属于类的方法,而非属于对象的方法,这意味着我们可以使用 `classmethod`  或者 `staticmethod` 来定义它。区别在于我们是否需要知道我们是哪个类中的一部分。因此既然我们想要声明一个类变量,让我们使用  `classmethod` 吧。