2つ以上のクラスで共通して1つの変数を使いたい

投稿者: Anonymous

hogehugaという2つのクラスのそれぞれのメソッドで数字numを共有して使いたいです。どのようにすれば2つのクラスのメソッドで共通して使えるでしょうか?
グローバル変数を使うべきでしょうか?

class hoge():
  def foo(self):
    print(num) # Error

class huga():
  def bar(self):
    print(num) # Error

解決

2つのオプションがあります:

  • クラスでオブジェクトを開始してから、そのオブジェクトで目的のメソッドを呼び出します
  • 使用する @classmethod 関数をクラスメソッドに変換するには

例:

class A(object):
    
    def a1(self):
        print(num)

    @classmethod
    def a2(cls):
        """ This a classmethod. """
        print "Hello from class A"

class B(object):
    def b1(self):
        print A().a1() # => prints 'Hello from an instance of A'
        print A.a2() # => 'Hello from class A'

または、必要に応じて継承を使用します

class Foo(object):
    def __init__(self):
        self.x = 42

class Bar(object):
    def __init__(self, foo):
        print foo.x

a = Foo()
b = Bar(a)

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *