モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

Python クラス定義のコードスニペット

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

公開日公開日
2013/07/22
最終更新最終更新
2022/11/16
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    プログラミング教育者。ScratchやPythonを教えています。

    0
    ステッカーを贈るとは?

    sample.py

    #!/usr/bin/python
    
    class MainClass:
        x = 128
        def setX(self, x):
            self.x = x
        def getX(self):
            return self.x
    
    class SubClass(MainClass):
        def __init__(self):
            self.x = 64
        def display(self):
            print self.x
    
    
    obj = MainClass()
    print obj.getX()
    obj.setX(256)
    print obj.getX()
    
    
    obj = SubClass()
    print obj.getX()
    obj.setX(1024)
    obj.display()
    

    実行例

    $ python sample.py 
    128
    256
    64
    1024
    

    with-as における処理を記述

    enterexit を実装することで with-as で利用できるクラスを実装できます。with 内で例外が発生した場合であっても __exit__ は実行されます。その場合、引数で例外の内容を取得できます。Java の try-with-resources や C# の using のようなものです。

    main.py

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    class MyClass(object):
        def __enter__(self):
            return self
        def __exit__(self, exc_type, exc_value, traceback):
            print "%r\n" % exc_type
            print "%r\n" % exc_value
            print "%r\n" % traceback
    
    def Main():
        with MyClass() as obj:
            raise Exception("xxxx")
    
    if __name__ == '__main__':
        Main()
    

    実行例

    $ python main.py
    <type 'exceptions.Exception'>
    
    Exception('xxxx',)
    
    <traceback object at 0x7fb9631a88c0>
    
    Traceback (most recent call last):
      File "main.py", line 17, in <module>
        Main()
      File "main.py", line 14, in Main
        raise Exception("xxxx")
    Exception: xxxx
    

    その他

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    # オブジェクトの属性値を取得
    class MyClass(object):
        x = 123
        y = -123
    obj = MyClass()
    getattr(obj, 'x') # 123
    
    # 静的メソッド化
    class MyClass2(object):
        @staticmethod
        def f():
            return 123
    MyClass2.f() # 123
    

    デストラクタ

    class MyClass3(object):
        def __del__(self):
            print 'destructed'
    def f():
        obj = MyClass3()
    f() # destructed
    

    プロパティとしてメソッドを実行

    @property を用いると、プロパティのようにメソッドにアクセスできます。

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    def Main():
        obj = MyClass()
        print(obj.myprop)  #=> hi
    
    class MyClass(object):
    
        @property
        def myprop(self):
            return 'hi'
    
    if __name__ == '__main__':
        Main()
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    プログラミング教育者。ScratchやPythonを教えています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事