首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建addPlayer()方法。(Python 3)

如何创建addPlayer()方法。(Python 3)
EN

Stack Overflow用户
提问于 2017-07-17 16:51:00
回答 1查看 722关注 0票数 0

我目前正在我的CSI类中从事一个OOP项目,在这个项目中,我必须创建各种运动队和运动员对象,以及一个将运动员添加到名册中的方法addPlayer()。这就是我到目前为止所拥有的。

代码语言:javascript
复制
class Athlete:

def __init__(self, name, number):
    self.name = name
    self.number = number

def __str__(self):
    return "Athlete(" + self.name + ", " + self.number + ")"

def name(self):
    return self.name

def number(self):
    return self.number
代码语言:javascript
复制
from Athlete import *

class SportsTeam:

    roster = []

    def __init__(self, city, name, colors):
        self.city = city
        self.name = name
        self.colors = colors
        SportsTeam.roster = roster

    def __str__(self):
        return "SportsTeam(" + self.city + ", " + self.name + \
              ", " + str(self.colors) + ", " + ")"

    def getcity(self):
        return self.city

    def getname(self):
        return self.name

    def getcolors(self):
        return self.colors

    def getRoster(self):
        return SportsTeam.roster

    def printRoster(self):
        for player in roster:
            print("Current Team Roster: " + str(SportsTeam.roster))

    def addPlayer(self, player):
        SportsTeam.roster.append(player)
        return SportsTeam.roster

问题是,当我尝试使用我创建的addPlayer()方法时,我会收到一条错误消息,告诉我list没有属性。不确定需要添加什么来修复这个问题。

我只编程了几个月,所以如果解决方案是显而易见的,我很抱歉

EN

回答 1

Stack Overflow用户

发布于 2017-07-17 20:56:30

在处理类时,有实例变量(如self.city = city)和类变量(如roster = [])。

实例变量与类的实例相关联。因此,如果创建2个SportsTeam对象,它们都有自己的city

类变量有点不同。它们与类的实例无关;也就是说,不管您创建了多少SportsTeam对象,都只会有一个roster变量。

对我来说,roster作为类变量似乎有点奇怪,因为每个SportsTeam都应该有自己的roster。但是,如果需要为CSI类使用类变量,则可以保留all_teams和/或all_players的列表。

考虑到这一点:

代码语言:javascript
复制
class SportsTeam:

    all_teams = []
    all_players = []

    def __init__(self, city, name, colors):
        self.city = city
        self.name = name
        self.colors = colors
        self.roster = []

        SportsTeam.all_teams.append(self)

    def __str__(self):
        return "SportsTeam(" + self.city + ", " + self.name + ", " + str(self.colors) + ")"

    def getCity(self):
        return self.city

    def getName(self):
        return self.name

    def getColors(self):
        return self.colors

    def getRoster(self):
        return self.roster

    def printRoster(self):
        # the for loop was unnecessary
        print("Current Team Roster:", str(self.roster))

    def addPlayer(self, player):
        SportsTeam.all_players.append(player)
        self.roster.append(player)
        return self.roster

如果希望将roster保持为类变量,请留下注释,我可以帮助您调整代码以适应这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45149659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档