2017-09-03 10 views
0

Pythonが特定のことをどのように知っているかについて質問があります。たとえば、私が書くとき特別なシンボルを持つオブジェクトを呼び出すpython 3

a_list = ["car", "plane"] 
print(a) 

Pythonはa_listがリストであることを知っています。それはどのように機能するのですか? Pythonのデフォルトモジュールではどこに書かれていますか?

私はちょっとリストのように機能し、オブジェクトを作成したいが、私は特定の位置にアイテムを取得する場合、私が代わりに

のような方法で

object_list[0] 

を書きたいと思います

object_list.obtain_item(0) 

そして私は

$"car", "plane"$ 
# like yo do ["car", "plane"] by default 

のようなものをやってオブジェクトを作成したいと私はできます」リストから継承しているので、私が取り組んでいるプロジェクトで禁止されています。

これも可能ですか?私はここやインターネットで検索していましたが、私の質問を適切に検索する言葉に入れてもいません。

答えて

0

あなたの最初の質問に答えるには、__getitem__メソッドの実装の結果になります。

class Foo(): 
    def __init__(self, x, y): 
     self.x = x 
     self.y = y 

    def __getitem__(self, ind): 
     if ind == 0: 
      return self.x 
     return self.y 

x = Foo(1, 2) 
print(x[0]) 
1 

print(x[1]) 
2 

これは非常に裸の実装であり、使用できないと言われているので、私はリストを使用していないことに注意してください。

あなたの2番目の質問に答えるには、言語の基本的な構文と文法を変更する必要があります。これは、言語のエンドユーザーとして、現在は実行できません。

+0

ありがとう、__getitem__は私が探していた方法でした – Bneya

0

Pythonは、a_listがリストであることを認識しています。それはどのように機能するのですか?どこにあるのですか? pythonのデフォルトモジュールで書かれていますか?

Pythonインタプリタは、listリテラルを認識してリストオブジェクトを作成します。 Pythonリストオブジェクトは、 "インタプリタに組み込まれている標準型"の一部です。

私は一種のリストのように動作し、オブジェクトを作成したいが、私は特定の位置にアイテムを取得したい とき、私はあなたがその使用を行うことができます

を書きたいと思うobject.getitem(self, key) 。インターネットには多くの有用な例があります。

と私は

$ "車" のようなものをやってオブジェクトを作成したいと思う、 "プレーン" $

ヨーヨーは[ "車" を、 "プレーン"]を行うようにデフォルト

によって

Pythonインタプリタを変更したくない場合は、文字列を解析して自分で必要なオブジェクトを作成するための「ネイティブ/ハードコア」ソリューションを少なくすることができます。、のようなもの:

>>> def my_parser(s): 
...  return [i.strip('"') for i in s.strip('$').split(', ')] 
... 
>>> my_parser('$"car", "plane"$') 
['car', 'plane'] 
>>> 
関連する問題