0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonで型指定。例外も投げる

Posted at
class 型判定でエラー(Exception):
    def __init__(self, 理想, 現実): super(Exception, self).__init__(str(理想)+'型がよかったのに'+str(現実)+'型が渡されました')
class 型が:
    def __init__(self, 型): self.型 = 型
    def か判定(self, インスタンス):
        if isinstance(インスタンス, self.型): return インスタンス
        else: raise 型判定でエラー(self.型.__name__, type(インスタンス).__name__)        

を書いて、
foo = 型が(hoge).か判定(var)
と書くと、
varhoge型か調べてくれる。
varhoge型なら何もしないが、
hoge型でなければ例外を投げる。

class 型判定でエラー(Exception):
    def __init__(self, 理想, 現実): super(Exception, self).__init__(str(理想)+'型がよかったのに'+str(現実)+'型が渡されました')
class 型が:
    def __init__(self, 型): self.型 = 型
    def か判定(self, インスタンス):
        if isinstance(インスタンス, self.型): return インスタンス
        else: raise 型判定でエラー(self.型.__name__, type(インスタンス).__name__)        

class 犬:
    pass
class 猫:
    pass

def 首輪をはめてお外へGO(ワンちゃん):
    型が(犬).か判定(ワンちゃん)
    print('散歩だわんっ!')

print("1匹目"); 首輪をはめてお外へGO(犬())
print("2匹目"); 首輪をはめてお外へGO(猫())

は次のようになる。

1匹目
散歩だわんっ!
2匹目
Traceback (most recent call last):
  File "D:\sd_4年前期\4年前期\SUDAP3_-1\cgi-bin\Typer.py", line 19, in <module>
    print("2匹目");首輪をはめてお外へGO(猫())
  File "D:\sd_4年前期\4年前期\SUDAP3_-1\cgi-bin\Typer.py", line 15, in 首輪をはめてお外へGO
    型が(犬).か判定(ワンちゃん)
  File "D:\sd_4年前期\4年前期\SUDAP3_-1\cgi-bin\Typer.py", line 7, in か判定
    else: raise 型判定でエラー(self.型.__name__, type(インスタンス).__name__)
型判定でエラー: 犬型がよかったのに猫型が渡されました
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?