希望在另一个班级中引用一个班级

时间:2015-12-22 18:04:23

标签: python class

我正在尝试创建一种篮球模拟。这就是我到目前为止所做的:

import random
from scipy.stats import norm

class teams:
    def __init__(self, pytho, pythd, coach, coachdev):
        self.pytho = pytho
        self.pythd = pythd
        self.coach = coach
        self.coachdev = coachdev

    def adjpytho(self):
        print((norm.ppf(random.random()) * self.coachdev + self.coach) + self.pytho)

    def adjpythd(self):
        print((norm.ppf(random.random()) * self.coachdev + self.coach) + self.pythd)

class game:
    def __init__(self, team1, team2):
        self.team1 = team1
        self.team2 = team2

    def points(self, team1, team2):
        print(teams.adjpytho(team1) - teams.adjpythd(team2))



Florida = teams(.90, .84, .06, .05)
Alabama = teams(.88, .83, .04, .06)
Oklahoma = teams(.81, .78, .06, .1)
Virginia = teams(.77, .99, .04, .06)


print(game.points(self, Florida, Virginia))

正如您所看到的,我已经设置了最初的“团队”课程并且工作正常。在其中,我有每个团队的四个主要参数,然后我调整其中两个(“adjpytho”和“adjpythd”)。

但是,我想现在得到游戏的实际模拟,我正在努力。我试图设置一个“游戏”类,它带来两个参数(两个团队在游戏中玩)。但是当我到达班级的“要点”部分时,我遇到了问题。

在“积分”中,我想拉动teams.adjpytho(佛罗里达州),然后是teams.adjpythd(弗吉尼亚州)。为了方便起见,我只是减去了两个,最终的结果应该是在控制台上输出的内容。

我试着做

print(game.points(self, Florida, Virginia))

但那不起作用。任何提示?

2 个答案:

答案 0 :(得分:2)

colors: ['#0d6957','#1fb89a']中,teams.adjpytho(team1)是类名,teams是变量名。在对象上调用方法的正确方法是:

team1

所以你根本不需要提及类名。 Python会发现team1.adjpytho() 是类team1的一个实例(你应该把它重命名为teams,顺便说一下 - 类名应该是单数),{{1} }将自动作为team参数传递。

对于teams1,您需要先创建它的实例,然后在其上调用self。此外,game并不需要points()points()参数,因为您已经将团队作为构造函数参数提供并将它们分配给变量 - 它们将可用作为team1team2,所以在self.team1内,你可以做到,例如self.team2。然后,你这样称呼它:

points()

答案 1 :(得分:0)

  print(teams.adjpytho(team1) - teams.adjpythd(team2))

将其更改为:

  str(teams.adjpytho(team1) - teams.adjpythd(team2))

因为print是一个python命令,它会在屏幕上放置一些内容然后返回0. str()接受一些东西并将其变成一个字符串,然后可以打印。