Я довольно новичок в объектно-ориентированном программировании, поэтому некоторые идеи абстракции для меня немного размыты.Я пишу переводчик для старого игрового языка.Частично это привело к необходимости реализации пользовательских типов из указанного языка и размещения их в стеке для манипулирования по мере необходимости.
Теперь я могу поместить строку в список.Я могу поместить число в список, и я даже нашел, что я могу поместить символы в список.Но я не совсем понимаю, как поместить экземпляр пользовательского объекта в список, когда не могу просто поместить его в переменную (поскольку, в конце концов, я не знаю, сколько их будет, и не могупродолжайте определять их вручную во время выполнения кода:)
Я создал класс для одного из самых простых типов данных - DBREF.DBREF просто содержит номер базы данных.Я не могу просто использовать целое число, строку, словарь и т. Д., Потому что в языке, который я должен реализовать, есть механизмы проверки типов, и это может сбить с толку, поскольку они уже используются в других местах в своих ближайших аналогах.
Вот мой код и мои соображения:
class dbref:
dbnumber=0
def __init__(self, number):
global number
dbnumber=number
def getdbref:
global number
return number
Я создаю класс с именем dbref.Все, что он делает (пока), это берет число и сохраняет его в переменной.Я надеюсь, что если бы я сделал:
examplelist=[ dbref(5) ]
, что бы объект dbref был в стеке.Это возможно?Кроме того, смогу ли я сделать:
if typeof(examplelist[0]) is dbref:
print "It's a DBREF."
else:
print "Nope."
... или я неправильно понимаю, как работают классы Python?Кроме того, мое определение класса вонючий в любом случае?