Ссылка на объект из пользовательской строки ввода - PullRequest
0 голосов
/ 01 октября 2019

У меня проблема со ссылкой на поля моего объекта из строки. Видимо, мне не разрешено это делать, и я предполагаю, что это потому, что строка ссылается на совершенно другое место в памяти, поскольку это ее собственный объект. Но я понятия не имею, как я могу сделать это лучше. Вот код

class Truck:

    width = 48

    def __init__(self):
        self.length = 480
        self.height = 108

standardTruck = Truck()

class Bale:

    def __init__(self, length, height, width):
        self.length = length
        self.height = height
        self.width = width

sewer1 = Bale(240, 18, 24)
c9001 = Bale(480, 8, 32)
ips1 = Bale(120, 30, 30)
sewer2 = Bale(240, 20, 28)
c9002 = Bale(480, 10, 30)
ips2 = Bale (120, 12, 60)
sewer3 = Bale(240, 32, 40)
c9003 = Bale(480, 10, 40)
ips2 = Bale(120, 32, 48)


bale1 = input("What bale do you want?")
bale1Q = input("How many do you want?")


print("You chose " + bale1Q + " bales of " + bale1 + ". This bale has a width of " + bale1.width + " a height of " + bale1.height + " and a length of " + bale1.length + ".")

1 Ответ

0 голосов
/ 01 октября 2019

Это не совсем связано с областями памяти. Просто переменная bale1, даже если она содержит строку "sewer1", не имеет ничего общего с действительной переменной с именем sewer1.

. Для этого вам, вероятно, нужен словарь вместо всех этихотдельные переменные.

bales = {
    "sewer1": Bale(240, 18, 24),
    "c9001": Bale(480, 8, 32),
    "ips1": Bale(120, 30, 30),
    "sewer2": Bale(240, 20, 28),
    "c9002": Bale(480, 10, 30),
    "ips2": Bale (120, 12, 60),
    "sewer3": Bale(240, 32, 40),
    "c9003": Bale(480, 10, 40),
    "ips2": Bale(120, 32, 48)
}

Теперь вы можете сделать:

bale_requested = input("What bale do you want?")
bale1 = bales[bale_requested]

, который ищет данное имя в словаре, чтобы найти соответствующий объект Bale.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...