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

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

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

目次目次を開く/閉じる

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

モーダルを閉じる

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

お支払い手続きへ
モーダルを閉じる

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

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

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

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

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

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

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

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()
Likeボタン(off)0
詳細設定を開く/閉じる
アカウント プロフィール画像

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

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

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

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

Feedbacks

Feedbacks コンセプト画像

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

    ログインする

    関連記事