在以下代码中:
class species:
def __init__(self, continent):
self.continent=continent
giraffe = species("africa")
animal = "giraffe"
编辑:动物是一个字符串
我可以从var“animal”中检索“非洲”吗?
答案 0 :(得分:0)
是。 animal
和giraffe
都是引用到同一个底层对象。非常喜欢" Jala015"和#J; Jala Smith"和妈妈" (或者爸爸?)可能都是对同一个人的引用。
同样,如果你通过其中一个引用更改对象的continent
,那么通过另一个引用可以看到该更改,因为它们都指向同一个地方。 / p>
<强>更新强>
现在你说动物不是对象的引用,而是字符串。有几种方法可以做到这一点,所有这些方法都有些复杂。
首先,如果giraffe
是全局的(如您的代码所示,那么它),那么它将在globals()
字典中。你可以这样做:
giraffe = species('Africa')
animal = "giraffe"
continent = globals()[animal].continent
如果长颈鹿不是全球性的,而是功能中的局部变量,那么它就不会起作用。您可以使用locals()
来获取它,但即便如此也是如此。在这种情况下,一般来说,你应该把这些东西放在你自己的字典中进行查找:
Zoo = {} # empty dictionary
giraffe = species('Africa')
Zoo['giraffe'] = giraffe
animal = "giraffe"
continent = Zoo[animal].continent
您可以通过将物种名称存储在Animal
类中来实现这一点,因此:
class Animal:
def __init__(self, name, where):
self.name = name
self.continent = where
然后你可以将你的对象放入deque,dict,list,set,tuple或者你喜欢的任何其他东西,并且仍然通过强力匹配它们:
Zoo = [ Animal('giraffe', 'Africa'), Animal('zebra', 'Africa'), Animal('Cheeto-Stained Ferret-Wearing Shitgibbon', 'North America') ]
pet = None
for animal in Zoo:
if animal.name == 'giraffe':
pet = animal
break
答案 1 :(得分:-1)
访问属性
animal.continent