我已经创建了一个(某种程度上)会话机器人,我希望它能够创建一个其听到的名字的人的模型。我希望通过创建我的“person”类的新实例来实现这一点,并将该类实例命名为该人(如Bob,Alice等)我整晚都在这里,以为我有因为它说我创建了实例,但是当试图引用该类的实例时,它告诉我'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()
我可以成功手动创建一个实例,然后通过点符号调用其属性,如果我提前对其进行硬编码,但这不是必须如何工作的(如果在对话中我说我遇到了Bob,我需要机器人创建一个名为Bob的Self类的新实例。)
mySelf = Self('Bob','Jones',"Coder",'19730101',black','brown','F','Boston','Massachusetts','a Jeep Wrangler')
如果我随后打印一个Bob.fName,我会得到Bob ....
我可以做一些相当不错的编码,但这对我来说是一个相对较新的领域,也许我已经看到了答案是什么,但根本不明白我看到的东西已经足够了解它是什么我需要,所以道歉。我看过许多帖子都有非常相似的标题,但是他们似乎没有找到我在这里要做的事情的答案,这对我来说似乎很简单:如果我创建一个新的“Self”(newSelf = Self),那么我想将newSelf重命名为“Bob”。
或者,我认为更容易,就是让新的Self以正确的名称创建,但是我找不到一种方法来获取包含名称的变量并使该名称=新的Self。 ..
感谢您的帮助。我现在已经待了六个多小时了。