Python
 Computer >> コンピューター >  >> プログラミング >> Python

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

  1. 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

  2. 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