一个类必须是一个对象,它可以是一个动作吗?

时间:2014-07-01 18:07:28

标签: python class init

我正在写一些基于文本的游戏,我对课程和初始化有一些想法等等。

我知道如果我制作一个"蓝图"我可以使用课程。为了一件事。我对如何使用__init__有点不确定,虽然我认为我可以通过测试来解决这个问题。我想知道的是,我可以使用类进行操作吗?比如说,我想在体育馆上课,也许是培训课程。我需要一种功能来进行各种运动(在这种情况下为3种),因为它们确实不同;游泳和跑步,举重和打网球。所以你可以选择你想要做的练习,然后你就可以做到这一点,然后你可以再做一次,然后你就完成了什么。

我想要使用一个类的原因是我会有变量,例如条件,力量和技术,我可以使用这些变量,而我在健身房但是他们赢了'改变。而且我可以更简单地去健身房。我可以使用一个类,然后只需使用class.function()来调用函数吗?

另外,你总是需要__init__吗?因为在这种情况下我没有理由使用它,对吗?

我希望你理解我所问的问题,如果你不理解,我可以尝试解释一下。

1 个答案:

答案 0 :(得分:2)

虽然我不太熟悉Python,但我想我可以提供一些一般的OOP建议。

首先,类类似于"现实生活中的对象抽象",所以让一个类来表示一个动作似乎有点奇怪。

现在,作为类实例的对象具有两个主要特征:

  • 对象具有 属性 ,表示特定对象在给定时间的状态。
  • 对象具有 方法 ,表示可以执行的操作

所以,我们假设你有一个班级Athlete,它有strengthskillweight等属性。这些是一般属性,任何运动员都有。

但是现在你需要那个运动员成为跑步者,你需要为跑步者设置附加属性(让我们说specialty,如果跑步者是短跑运动员或者是短跑运动员,可以采用不同的值。马拉松运动员,例如)。而不是为跑步者写一个全新的课程,毕竟 是运动员,你只需要写一个 Sub class 的运动员,并添加所有特定的参数与Runner

相关

所以,编写时间:

class Athlete:
    def __init__(self, strength, skill, weight):
        self.strength = strength
        self.skill = skill
        self.weight = weight
    def anAthleteMethod(self):
        pass

class Runner(Athlete):
    def __init__(self, strenght, skill, weight, specialty):
        super(Athlete, self, strenght, skill, weight)
        self.specialty = specialty
    def run(self):
        pass

所以,最后,回答你的问题:

  • 从我的特定观点来看,你不能写一个类来执行一个动作......但你可以为任何执行适当动作的特定类创建子类
  • 解决方法:您可以编写一个班级Sport,可以让运动员参加任何您希望他做的事情。