如何在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,後來繼承。
試圖糾正等號和報價。如果缺少任何東西,請隨時回滾。 – Lafexlos