Я создал (несколько) разговорного бота и хочу, чтобы он мог создавать модель людей, чьи имена он слышит. Я хочу сделать это, создав для него новый экземпляр моего «персонального» класса, и этот экземпляр класса будет назван как этот человек (как у Боба, Алисы и т. Д.), Где я был всю ночь, думал, что это потому, что он сказал, что я создал экземпляр, но при попытке сослаться на указанный экземпляр класса, он говорит мне, что имя 'Bob' не определено:
properNouns = [word for word,pos in taggedSent if pos == 'NNP']
if properNouns:
npn = str(properNouns)
print(npn) # ['Bob']
npn = re.sub('[\[\]\,\']', '', npn)
print(npn) # Bob
newPerson = Self(npn,'','','','','','','','','','','','','','') # Put "Bob" as the fName
newPerson.__name__ = npn # Change the instance name to "Bob" (well, try anyway)
print(str(newPerson.__name__) + " was created!") # Bob was created!
print(Bob.fName + " is the first name") # NameError: name 'Bob' is not defined
Мой базовый класс выглядит следующим образом:
class Self(): # A starter concept of a Host's concept of Self/Me
def __init__(self, fName, lName, DoB, job, hColor, eColor, sex, homeTown, homeState, whatIHave):
self.fName = fName
self.lName = lName
self.DoB = DoB
self.job = job
self.hColor = hColor
self.eColor = eColor
self.sex = sex
self.homeTown = homeTown
self.homeState = homeState
self.whatIHave = whatIHave
def getFullName(self):
fullName = str(self.fName) + ' ' + str(self.lName)
return fullName.title()
Я могу успешно создать экземпляр вручную и впоследствии вызывать его атрибуты с помощью точечной нотации, если я заранее жестко закодировал его, но это не то, как это должно работать (если в разговоре я скажу, что встретился с Бобом, я нужен бот для создания нового экземпляра класса Self с именем Bob.)
mySelf = Self('Bob','Jones',"Coder",'19730101',black','brown','F','Boston','Massachusetts','a Jeep Wrangler')
И если впоследствии я напечатаю Bob.fName, я получу Боба ...
Я могу сделать довольно приличное кодирование, но это для меня относительно новая область, и может быть, я видел ответ, но просто не понимаю, что вижу достаточно хорошо, чтобы понять, что это такое. Мне нужно, поэтому извинения. Я видел много постов с очень похожими заголовками, но они, кажется, не имеют ответа на то, что я собираюсь сделать здесь, что мне кажется простым: если я создаю новое «Self» (newSelf = Self), то Я хочу переименовать newSelf в «Bob».
В качестве альтернативы, и я бы подумал проще, было бы создать новое «Я» с правильным именем для начала, но я не могу найти способ взять переменную, содержащую имя, и сделать это имя = новым «Я». ..
Спасибо за вашу помощь. Я занимаюсь этим более шести часов.