2016-11-30 32 views
0

我帶班玩弄屬性,我要做到以下幾點:從調用類Python中

class Hi (object): 
    def __init__(self, bloop): 
      self.bloop = bloop 
thing = Hi("bloop") 
name = input("Input a thing") # Let`s assume you input thing 
print(name.bloop) 

我希望它做的是,它print "bloop"因爲您輸入thing和它得到bloopthing有點像thing.bloop

+0

試圖糾正等號和報價。如果缺少任何東西,請隨時回滾。 – Lafexlos

回答

0

如何在dict存儲thing

class Hi: 
    def __init__(self, bloop): 
     self.bloop = bloop 
things = {'thing': Hi('bloop')} 

name = input("Input a thing") # Let`s assume you input 'thing' 
try: 
    print(things[name].bloop) 
except KeyError: 
    print("Sorry, I dont know that thing :(") 

有,當然,其他的方式來調用類的屬性。你可以實現一個__call__()方法,它允許你調用類的實例像一個函數,你的情況回報.bloop

class Hi: 
    def __init__(self, bloop): 
     self.bloop = bloop 
    def __call__(self): 
     return self.bloop 

things = {'thing': Hi('bloop')} 
name = input("Input a thing") # Let`s assume you input 'thing' 
try: 
    print(things[name]()) 
except KeyError: 
    print("Sorry, I dont know that thing :(") 

這樣,您可以稍後重命名你的屬性,或者返回另一個屬性(或做完全不同的東西),而不必在主python文件中替換.bloop

第三種方式,這直接關係到你的問題的標題calling attributes from[of] classes in Python:您可以使用@Property裝飾,讓您的.bloop屬性可調用像像這樣的功能:

class Hi: 
    def __init__(self, bloop): 
     self.bloop = bloop 
    @Property 
    def bloop(): 
     return self.bloop 

    @bloop.setter 
    def bloop(self, new_value) 
     self.bloop = new_value 


things = {'thing': Hi('bloop')} 
name = input("Input a thing") # Let`s assume you input 'thing' 
try: 
    print(things[name].bloop()) 
except KeyError: 
    print("Sorry, I dont know that thing :(") 

要充分認識Property裝飾,I recommend this article

順便說一下,根據tags你的問題,你使用Python3.x - 你不必聲明你的類從Object在Python3,後來繼承。