2017-07-01 2 views
0

グローバル変数が増加していて、別のモジュールからカウンタをリセットする必要があります。グローバル変数にアクセスしてその値を別のモジュールから変更する方法

post_save信号が実行されるたびに、カウンタ変数が増加し、端末に番号 が表示されます。

しかし、私は別のモジュールからコードを呼び出すと、私はカウンターを0に設定したい、だから私は再びpost_save信号を呼び出すとき、私は2つの変数があるようでなかったとして、それが0

から始まります。

counter = 0 
@receiver(post_save, sender=Numbers) 
def num_post(sender, **kwargs): 
    global counter 
    counter += 1 
    print(counter) 
    dict = {} 
    for object in Numbers.objects.all(): 
     dict[object.pk] = object.number 
     print(dict) 


    Group('group1').send({ 
     'text': json.dumps(dict) 
    }) 

from .models import counter 

    def ws_disconnect(message): 
     global counter 
     counter = 0 
     print(counter) 
     Group('eae').discard(message.reply_channel) 
     Group('opa').discard(message.reply_channel) 
+3

私は、あなたが本当にこれをしてはいけないと言ってくれる人になるでしょう。ファイル全体でグローバルを変更すると、これを行うためのより良い方法が100%保証されます。 – idjaw

+0

@idjawもっと良い方法があれば教えてください。 – Goun2

+3

モジュール間で状態の状態を変更し、状態を追跡する必要がある場合は、そのクラスのインスタンス内のすべてのデータを含むクラスを作成し、管理、保守、トラブルシューティングが容易になるよう考慮する必要があります。 – idjaw

答えて

1

モジュールオブジェクトの属性は、そのモジュール内のグローバルに対応します。 import module; module.function()と言ったことがあれば、すでにおなじみです。さて、同じ方法で属性を設定することができます。

from . import models 
models.counter = 0 
+0

@ChristianDean done。 –

+0

ありがとう、それは働いた。 – Goun2

関連する問題