从类中的属性引用和更改全局变量或对象

时间:2019-05-27 02:49:58

标签: python python-3.x

我想要一个具有许多不同设备当前状态的类。随着这些状态的更改,我希望它们更改对象或变量以反映更改。这意味着每个设备都有一个单独的实例,并带有单独的变量或对象以反映属性状态。

我可以在类中更改和反映局部变量或更改全局变量,但是我希望它是动态的,并且我要更改的变量成为类中的可设置属性。

# define test
def test():
  # set a
  a = 2
  # output
  return a

print(test())
>> 2

print(a)
>> NameError: name 'a' is not defined

输出应为:

class button(object):
    def __init__(self):
        self.State = 0

    def SetState(self, state):
        self.State = state

class FeedbackHandler(object):   
    def __init__(self):
        self.Power = None
        self.Button = None

    def __setattr__(self, name, value):
        object.__setattr__(self, name, value)
        if name == 'Power':
            if value == "On":
                self.Button.SetState(1)
            elif value == "Off":
                self.Button.SetState(0)
            elif value == None:
                pass
            else:
                print('Invalid Power Setting')

ProjectorFBButton = button()
Projector1FB = FeedbackHandler()
Projector1FB.Button = ProjectorFBButton
Projector1FB.Power = "On"
print(ProjectorFBButton.State)
Projector1FB.Power = "Off"
print(ProjectorFBButton.State)
Projector1FB.Power = "Test"

0 个答案:

没有答案