【问题标题】:Why do you need to assign class to variable to use it? Unlike function为什么需要将类分配给变量才能使用它?不同于功能
【发布时间】:2021-09-02 09:10:09
【问题描述】:

我只是在学习,有一个困惑 在这段代码中,我分配了 dice=Dice().. 为什么不直接使用 Dice.roll()?它对我的立场争论大喊大叫;( 您能否澄清一个区别,与函数相比,我为什么需要它?

import random
class Dice:
    def roll(self):
        a=random.randint(1,6)
        b = random.randint(1, 6)
        return a,b


dice=Dice()
print(dice.roll())

【问题讨论】:

  • 你应该重读面向对象的编程。 dice = Dice() 创建一个新的 Dice object 并将其分配给 dice 变量。同样,您可以像这样创建另一个骰子:dice2 = Dice()。现在您有两个 Dice 对象,但只有一个 Dice 类。这类似于您可以在桌子上放置多个骰子,但它们都表现出相同的共同行为。
  • 我建议您深入了解一些 Python 教程以了解有关类的更多信息。这个例子没有很好地选择,因为它只做一个函数会做的事情。 SO 不适合替换教程。
  • 上面的一些关键字是实例、类和静态方法。

标签: python function class


【解决方案1】:

查看dice 函数:它有一个参数self。但是当您调用 Dice.roll() 时,您传递的参数为零,因此会出现错误。

当您执行dice.roll() 时,其中diceDice 类的实例,传递的第一个参数将自动填充dice 对象。 Dice.roll(dice) 是一种更明确的编写方式(覆盖之外)。

这不是一个使用类的好例子,因为这里不需要class。但是想象一下你想要不同种类的骰子,有不同的面数,它会更有用:

class Die:
    def __init__(self, sides):
        self.sides = sides
    def roll(self):
        return random.randint(1, self.sides)

die = Die(6)      # Create a 6-sided die.

print(die.roll()) # Roll our D6.

【讨论】:

    【解决方案2】:

    这不是作业。

    dice=Dice()
    

    创建dice 对象并将其初始化为Dice 类的实例。
    类是一个模板,一个蓝图。
    您应该创建一个对象,该类的实例才能使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      相关资源
      最近更新 更多