[英]Editing Instance Attributes in Python
我有一個名為 Player 的 python class 看起來像這樣......
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 = value
編輯它們,其中 value 是一個包含數字的變量。
提前致謝!
更新:好的,所以我知道您必須使用 x = Player() 然后 x.row =... 定義此實例的新出現
但我最初需要用某些值(每次都不同)初始化變量,所以我想我可以使用 function 和 function 的返回值將設置變量的初始值,但它只會創建無限遞歸。 我做了...
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
如果你這樣做
Player().row = value
print(Player().row)
第一行的Player()
創建了一個新實例; 然后通過將其row
屬性設置為value
來修改它; 然后你扔掉那個實例,因為你沒有費心在任何地方記住它。 然后在下一行中,創建一個新實例(初始化程序將row
屬性設置為零)。
並非所有球員都可以互換。 如果你讓約翰坐在第二排,並不意味着哈利也會坐在第二排; 這只是意味着約翰在第二排。
要正確執行此操作,請將您的Player
實例存儲在一個變量中:
john = Player()
john.row = 2
print(john.row)
您需要將變量添加到__init__()
方法之外
編輯:將行和列添加到 class
class Player:
row = 0 # NO self here
col = 0
def __init__(self):
self.display = 'A'
self.num_water_buckets = 0
john = Player()
john.num_water_buckets = 12
print(f'before change: {john.col}')
john.col = 5
print(f'after change: {john.col}')
print(f'class property: {Player.col}') # note it did not change the class
Output:
before change: 0
after change: 5
class property: 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.