Можно ли различать два объекта с одинаковой переменной в Python? - PullRequest
0 голосов
/ 10 июля 2020

Начну с того, что поделюсь кодом.

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_1 и ball_2. Однако , я хотел бы оставить имена переменных такими же. Есть ли способ, чтобы Python понимал, какой шар какой, не меняя имен, или мне просто придется иметь дело с ними с разными именами?

1 Ответ

1 голос
/ 10 июля 2020

Не уверен, где вы хотите go с этим, но вам не нужна переменная 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...