首页 > 解决方案 > 在 Python 中编辑实例属性

问题描述

我有一个名为 Player 的 python 类,看起来像这样......

class Player:
    def __init__(self):
         self.display = 'A'
         self.num_water_buckets = 0
         self.row = 0
         self.col = 0

我在编辑 self.row 和 self.col 时遇到了麻烦……也许它们是不可变的,但我在互联网上没有找到很多。Player().row并且Player().col可以工作,但是它们每次都打印 0。我正在尝试使用Player().row = valuewhere value 是包含数字的变量来编辑它们。

提前致谢!

更新:好的,我知道您必须使用 x = Player() 然后 x.row = ... 定义此实例的新出现

但是我最初需要用某些值(每次都不同)初始化变量,所以我认为我可以使用一个函数,该函数的返回值将设置变量的初始值,但它只会创建一个无限递归。我做了...

class Player:
def __init__(self):
    from game_parser import read_lines
    self.display = 'A'
    self.num_water_buckets = 0
    self.row = Player().detRow(sys.argv[1])
    self.col = Player().detCol(sys.argv[1])

def detRow(fileName):
    # use this function to return the row
def detCol(fileName):
    # use this function to return the col

标签: pythonclassinstance

解决方案


如果你这样做

Player().row = value
print(Player().row)

第一Player()行中的创建一个新实例;然后通过将其row属性设置为来修改它value;然后你扔掉那个实例,因为你没有费心在任何地方记住它。然后在下一行中,创建一个实例(初始化程序将row属性设置为零)。

并非所有球员都可以互换。如果你让约翰坐在第二排,并不意味着哈利也会坐在第二排;这只是意味着约翰在第二排。

要正确执行此操作,请将您的Player实例存储在一个变量中:

john = Player()
john.row = 2
print(john.row)

推荐阅读