我想在調用對象時返回字典值。python class init返回字典值
class card:
foo={2:0}
def __init__(self,num):
self._num=card.foo[num]
當我做
bar=card(2)
bar
返回
<__main__.Card at 0x7f5d60440588>
我怎麼得到它返回0?
我想在調用對象時返回字典值。python class init返回字典值
class card:
foo={2:0}
def __init__(self,num):
self._num=card.foo[num]
當我做
bar=card(2)
bar
返回
<__main__.Card at 0x7f5d60440588>
我怎麼得到它返回0?
您必須擴展__repr__
特殊方法:
class Card:
foo = {2: 0}
def __init__(self,num):
self._num = Card.foo.get(num)
def __repr__(self):
return str(self._num)
你沒有訪問到的bar
_num
屬性。你需要bar._num
:
>>> class card:
... foo={2:0}
... def __init__(self,num):
... self._num=card.foo[num]
...
>>> bar=card(2)
>>> bar
<__main__.card instance at 0x7fa9d7f9c098>
>>> bar._num
0
Attribute references使用使用的標準語法對於Python中的所有屬性引用:obj.name。有效的屬性名稱是在創建類對象時位於類名稱空間中的所有名稱。
不允許發表評論,所以我通過@Malik卜拉希米(__repr__
和__str__
應該返回字符串,而不是數字)編輯答案只有一條線路:
class Card:
foo = {2: 0}
def __init__(self,num):
self._num = Card.foo.get(num)
def __repr__(self):
return str(self._num)
這不是真的,我們爲什麼要返回一個數字作爲一個字符串? –
@Malik Brahimi:[__repr__()](https://docs.python.org/2/reference/datamodel.html#object.__repr__)說**返回值必須是字符串對象** – EKomarov
哦,是的。對不起,如果我忘記了。如果可以,請將我的解決方案標記爲答案。 –
似乎很奇怪。你的目標是什麼? –
你應該使用'get'來確保一個值。 –
@MalikBrahimi有時候'KeyError'是正確的結果! – jonrsharpe