Pythonでクラス変数を定義する正しい方法は何ですか?
クラス変数は、__init__methodの外部で宣言される変数です。これらは静的要素です。つまり、クラスインスタンスではなく、クラスに属します。これらのクラス変数は、そのクラスのすべてのインスタンスで共有されます。クラス変数のサンプルコード
例
class MyClass: __item1 = 123 __item2 = "abc" def __init__(self): #pass or something else
コードを増やすと、より明確に理解できるようになります-
class MyClass: stat_elem = 456 def __init__(self): self.object_elem = 789 c1 = MyClass() c2 = MyClass() # Initial values of both elements >>> print c1.stat_elem, c1.object_elem 456 789 >>> print c2.stat_elem, c2.object_elem 456 789 # Let's try changing the static element MyClass.static_elem = 888 >>> print c1.stat_elem, c1.object_elem 888 789 >>> print c2.stat_elem, c2.object_elem 888 789 # Now, let's try changing the object element c1.object_elem = 777 >>> print c1.stat_elem, c1.object_elem 888 777 >>> print c2.stat_elem, c2.object_elem 888 789
-
Python例外をログに記録する最良の方法は何ですか?
ロギングモジュールをインポートしてから、logging.exceptionメソッドを使用してPython例外のログを作成します。 例 import logging try: print 'toy' + 6 except Exception as e: logging.exception("This is an exception log") 出力 次の出力が得られます ERROR:root:This is an exception log Traceback (most recent call last): File "C:/Users/Tutor
-
Pythonでカスタム例外を使用してオブジェクトを渡す正しい方法は何ですか?
指定されたコードで、スーパークラスExceptionのサブクラスであるカスタム例外FooExceptionが作成されました。次のように、文字列オブジェクトをカスタム例外に渡します 例 #foobar.py class FooException(Exception): def __init__(self, text, *args): super ( FooException, self ).__init__ ( text, *args ) self.text = text try: bar = input("Enter a string:") if not isinstanc