Я разрабатываю язык программирования на Python, где вы можете программировать симуляцию простых машин.Я написал функцию, которая принимает некоторые входные данные, анализирует их и выясняет, каково первое слово.
Теперь для вставки первого слова мне нужно взять следующие слова obj
, name
, x
и y
.
obj
: какой это простой тип машины
name
: чтоВы хотите вызвать объект
x
: координата X на графике
y
: координата Y на графике
Я уже создал функцию nextword
, которая перебирает остальную часть кода и определяет каждую переменную как эти слова, поэтому со следующим кодом:
insert pulley JohnThePulley 3 4
Он видит, что первое слово - insert
,и вызывает мою функцию insert
.
Затем она устанавливает obj
в pulley
, name
в JohnThePulley
и так далее.
Однако теперь мне нужно создать объект в дочернем классе pulley
, в классе матери simple_machines
, который имеет имя JohnThePulley
и т. Д.
Ситуация IЯ в том, что для первого слова вставки, например, я вообще не знаю, каким будет следующее слово из всех вариантов дочерних классов, которые они могут вызвать.Мне нужно создать указанный объект вместе с предоставленным именем, предоставленной координатой X и предоставленной координатой Y.
Я попытался сделать простое форматирование в python, используя '{}'.format(name)
или .format(obj)
, но те неt работа.
# Insert function
def insert(code):
c = 4
syntax = np.array([obj, name, x, y])
nextword(parser.code_array, syntax, c)
objc += 1
return
# Nextword function, code_array[0] is insert, syntax is an array that
# contains all the variables that need to be defined for any function
def nextword(code_array, syntax, c):
assert len(code_array) == c + 1, "Too Many Words!"
for m in range(0, c):
syntax[m] = code_array[m + 1]
return
# Mother Class simple_machines with properties
class simple_machines:
def __init__(self, obj, name, x, y, coords):
self.obj = (
obj
) # what type of obj, in this case, pulley
self.name = name # name, JohnThePulley
self.x = x # 3 in this case
self.y = y # 4 in this case
self.coords = (x, y) # (3,4) in this case
return
# Pulley Class, here so I can later define special properties for a pulley
class pulley(simple_machines):
def __init__(self, name, x, y):
super(simple_machines, self).__init__()
return
# Code that I tried
def insert(code):
c = 4
syntax = np.array([obj, name, x, y])
nextword(parser.code_array, syntax, c)
"{}".format(name) = "{}".format(obj)(
name, x, y
) # this is what my
# instantiation would look like, formatting an object with name, then
# calling a class formatted with obj, and inserting their input of
# name,x,y as the properties
return
Я ожидаю, что объект в pulley
будет создан с именем JohnThePulley
и координатами X = 3 и Y = 4. Что я хотел бы получить,Проще говоря, это объект с именем name
в классе с именем obj
с атрибутами name.x
, name.y
и т. д.
Однако я получаю сообщения об ошибках типа:
NameError: name 'obj' is not defined
или:
SyntaxError: can't assign to function call
Первый, по-видимому, означает, что слово obj
не присваивается, но второй, по-видимому, означает, что я не могу отформатировать имя функции или отформатировать имя переменнойи определить его как функцию (хотя я создаю его экземпляр как класс).
Что я делаю не так?Как я могу это исправить?