是否可以区分 Python 中具有相同变量的两个对象?
Is it possible to differentiate between two objects that have the same variable in Python?
我将从共享代码开始。
import random
class Ball:
def __init__(self, radius):
self.radius = radius
def radius():
return random.randint(1, 10)
ball = Ball(radius())
ball = Ball(radius())
class Bag:
def __init__(self, slots):
self.slots = slots
bag = Bag([1, 2])
bag.slots[0] = ball
bag.slots[1] = ball
print(bag.slots[0].radius)
print(bag.slots[1].radius)
两个球对象看起来完全一样。不同之处在于半径,因为它是由我的 def radius() 函数随机生成的。我希望能够将第一个球放入包对象的第一个槽中,将第二个球放入第二个槽中。截至目前,这是目前编写的,这是不可能的。这是因为两个球对象都具有完全相同的变量“ball”。我可以通过将球的名称更改为 ball_1 和 ball_2 之类的名称来轻松解决此问题。 但是,我想保持变量名相同。有没有办法让 Python 在不更改名称的情况下了解哪个球是哪个,或者我只需要处理具有不同名称的球?
不确定你想用它去哪里,但你不需要 ball 变量:
import random
class Ball:
def __init__(self, radius):
self.radius = radius
def radius():
return random.randint(1, 10)
class Bag:
def __init__(self, slots):
self.slots = slots
bag = Bag([1, 2])
bag.slots[0] = Ball(radius())
bag.slots[1] = Ball(radius())
print(bag.slots[0].radius)
print(bag.slots[1].radius)
我将从共享代码开始。
import random
class Ball:
def __init__(self, radius):
self.radius = radius
def radius():
return random.randint(1, 10)
ball = Ball(radius())
ball = Ball(radius())
class Bag:
def __init__(self, slots):
self.slots = slots
bag = Bag([1, 2])
bag.slots[0] = ball
bag.slots[1] = ball
print(bag.slots[0].radius)
print(bag.slots[1].radius)
两个球对象看起来完全一样。不同之处在于半径,因为它是由我的 def radius() 函数随机生成的。我希望能够将第一个球放入包对象的第一个槽中,将第二个球放入第二个槽中。截至目前,这是目前编写的,这是不可能的。这是因为两个球对象都具有完全相同的变量“ball”。我可以通过将球的名称更改为 ball_1 和 ball_2 之类的名称来轻松解决此问题。 但是,我想保持变量名相同。有没有办法让 Python 在不更改名称的情况下了解哪个球是哪个,或者我只需要处理具有不同名称的球?
不确定你想用它去哪里,但你不需要 ball 变量:
import random
class Ball:
def __init__(self, radius):
self.radius = radius
def radius():
return random.randint(1, 10)
class Bag:
def __init__(self, slots):
self.slots = slots
bag = Bag([1, 2])
bag.slots[0] = Ball(radius())
bag.slots[1] = Ball(radius())
print(bag.slots[0].radius)
print(bag.slots[1].radius)