タグ付けされた質問 「type-hinting」

型ヒントは、関数の引数を特定のオブジェクトにバインドするか、強く型付けします。

5
Python 3.5の型ヒントとは何ですか?
Python 3.5で最も話題になっている機能の1つは型ヒントです。 型ヒントの例はこの記事とこの記事で説明されていますが、責任を持って型ヒントを使用することについても言及されています。誰かがそれらについて、それらをいつ使用すべきか、いつ使用すべきかについて説明できますか?

3
Pythonでタイプヒントを使用してデフォルトのパラメーター値を追加する
このような機能がある場合: def foo(name, opts={}): pass パラメータに型ヒントを追加したいのですが、どうすればよいですか?私が想定した方法では、構文エラーが発生します。 def foo(name: str, opts={}: dict) -> str: pass 以下は構文エラーをスローしませんが、このケースを処理する直感的な方法のようには見えません。 def foo(name: str, opts: dict={}) -> str: pass typingドキュメントやGoogle検索で何も見つかりません。 編集:デフォルトの引数がPythonでどのように機能するかは知りませんでしたが、この質問のために、上の例をそのまま使用します。一般に、次のことを行う方がはるかに適切です。 def foo(name: str, opts: dict=None) -> str: if not opts: opts={} pass

9
PHP 7より前の「文字列のインスタンスでなければならず、文字列が指定されている」を解決するにはどうすればよいですか?
これが私のコードです: function phpwtf(string $s) { echo "$s\n"; } phpwtf("Type hinting is da bomb"); これはこのエラーになります: キャッチ可能な致命的なエラー:phpwtf()に渡される引数1は文字列のインスタンスでなければなりません PHPが目的のタイプを同じように認識し、拒否するのを見るのは、少しオーウェル派以上です。5つのライトがあります。 PHPの文字列の型ヒントに相当するものは何ですか?ここで何が起こっているのかを正確に説明する答えに対するボーナス検討。
217 php  types  type-hinting 




5
PyCharmに、パラメーターが期待される型をどのように伝えることができますか?
コンストラクター、割り当て、およびメソッド呼び出しに関しては、PyCharm IDEは私のソースコードを分析し、各変数の型を理解するのに非常に適しています。コード補完とパラメータ情報が得られ、存在しない属性にアクセスしようとすると警告が表示されるので、それが正しいときに気に入っています。 しかし、パラメータに関しては何も知りません。コード補完のドロップダウンでは、パラメーターのタイプがわからないため、何も表示できません。コード分​​析は警告を探すことができません。 class Person: def __init__(self, name, age): self.name = name self.age = age peasant = Person("Dennis", 37) # PyCharm knows that the "peasant" variable is of type Person peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method class King: def repress(self, peasant): # PyCharm has no …

3
PHP7のnull可能な戻り値の型
PHP 7では、戻り型宣言が導入されています。つまり、関数のパラメーターで可能なように、戻り値が特定のクラス、インターフェース、配列、呼び出し可能、または新しくヒント可能なスカラー型の1つであることを示すことができます。 function returnHello(): string { return 'hello'; } 多くの場合、値が常に存在するとは限らず、何らかのタイプの値またはnullのいずれかを返す可能性があります。デフォルトをnull(DateTime $time = null)に設定することでパラメーターをnull可能にすることができますが、戻り値の型に対してこれを行う方法はないようです。それは確かにそうなのですか、それともどうにかしてそれを行う方法を見つけていませんか?これらは機能しません: function returnHello(): string? { return 'hello'; } function returnHello(): string|null { return 'hello'; }

3
* argsおよび** kwargsの型注釈
いくつかのインターフェイスを作成するために、抽象基本クラスを使用してPythonの型注釈を試しています。*argsandの可能なタイプに注釈を付ける方法はあり**kwargsますか? たとえば、関数への賢明な引数が1つintまたは2つintのであることをどのように表現しますか?type(args)与えTuple私の推測のようにタイプに注釈を付けることだったのでUnion[Tuple[int, int], Tuple[int]]、これは動作しません。 from typing import Union, Tuple def foo(*args: Union[Tuple[int, int], Tuple[int]]): try: i, j = args return i + j except ValueError: assert len(args) == 1 i = args[0] return i # ok print(foo((1,))) print(foo((1, 2))) # mypy does not like this print(foo(1)) print(foo(1, 2)) mypyからのエラーメッセージ: t.py: …

2
型ヒントで関数の型を指定するにはどうすればよいですか?
現在のPython 3.5プロジェクトで型ヒントを使用したい。私の関数は関数をパラメーターとして受け取る必要があります。 型ヒントで型関数を指定するにはどうすればよいですか? import typing def my_function(name:typing.AnyStr, func: typing.Function) -> None: # However, typing.Function does not exist. # How can I specify the type function for the parameter `func`? # do some processing pass PEP 483を確認しましたが、関数タイプのヒントが見つかりませんでした。

5
指定されたタイプのリストを示唆するタイプ
Python 3の関数アノテーションを使用して、PyCharmや他のIDEで型ヒントを提供する目的で、同種リスト(または他のコレクション)に含まれるアイテムの型を指定することは可能ですか? intのリストの疑似Pythonコードの例: def my_func(l:list<int>): pass 私はそれがDocstringを使用して可能であることを知っています... def my_func(l): """ :type l: list[int] """ pass ...可能であれば、アノテーションスタイルを使用します。

2
名前付きタプルにヒントを入力する
次のコードを検討してください。 from collections import namedtuple point = namedtuple("Point", ("x:int", "y:int")) 上記のコードは、私が達成しようとしていることを示すための方法にすぎません。namedtupleタイプヒントで作りたいのですが。 意図した結果を達成するためのエレガントな方法を知っていますか?

1
複数の戻り値のタイプに注釈を付ける方法は?
型ヒントを使用してIterable、常に2つの値aboolとaを生成するを返す関数に注釈を付けるにはどうすればよいstrですか?ヒントTuple[bool, str]は、戻り値の型をジェネレーターや他のタイプの反復可能オブジェクトではなくタプルに制限することを除いて、近いです。 次のようにfoo()複数の値を返すために使用される関数に注釈を付けたいので、私は主に興味があります。 always_a_bool, always_a_str = foo() 通常は(タプルを返す)のfoo()ような関数を実行return a, bしますが、返されるタプルをジェネレーターやリストなどに置き換えるのに十分な柔軟性を備えたタイプヒントが必要です。

5
循環インポートなしのPython型ヒント
私は私の巨大なクラスを2つに分割しようとしています。ええと、基本的には「メイン」クラスと、次のような追加機能を備えたミックスインに入れます。 main.py ファイル: import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... mymixin.py ファイル: class MyMixin(object): def func2(self: Main, xxx): # <--- note the type hint ... さて、これMyMixin.func2は問題なく機能しますが、タイプヒントはもちろん機能しません。インポートできません。main.py循環インポートが行われ、ヒントがないため、エディター(PyCharm)は何を認識できませんself。 私はPython 3.4を使用していますが、そこでソリューションが利用可能な場合は喜んで3.5に移行します。 クラスを2つのファイルに分割し、すべての「接続」を保持して、IDEが自動補完と、タイプを知っていることから来る他のすべての便利な機能を提供できる方法はありますか?

2
Python void戻り型注釈
Python 3.xでは、次のような関数の戻り型注釈を使用するのが一般的です。 def foo() -> str: return "bar" 「void」タイプの正しい注釈は何ですか? 私は3つのオプションを考えています: def foo() -> None: はNoneタイプではないため、論理IMOではありません。 def foo() -> type(None): 私が取得するために知っている最高の構文を使用してNoneType、 def foo(): 明示的な戻り型情報を省略します。 オプション2が私にとって最も論理的だと思われますが、1のインスタンスはすでにいくつか見ました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.