当我更改变量(Python3)时,如何生成if语句触发器
我试图用Python3编写一个简单的小程序,其中有常量语句,每当变量发生变化时,这些语句将在代码中进一步激活,这样我就不必去搞乱决策。 例如:当我更改变量(Python3)时,如何生成if语句触发器,python,python-3.x,Python,Python 3.x,我试图用Python3编写一个简单的小程序,其中有常量语句,每当变量发生变化时,这些语句将在代码中进一步激活,这样我就不必去搞乱决策。 例如: example = 0 if example == 1: print("Successful") example = 1 但它没有更新,我不确定“如果”是否是最好的说法,但我不知道我还能用什么。我试了一会儿,但也没用。如果你能给我指出正确的方向那就太好了 你不能那样做。下面是一个示例,说明如何使用来实现类似的目标: class Foo:
example = 0
if example == 1:
print("Successful")
example = 1
但它没有更新,我不确定“如果”是否是最好的说法,但我不知道我还能用什么。我试了一会儿,但也没用。如果你能给我指出正确的方向那就太好了 你不能那样做。下面是一个示例,说明如何使用来实现类似的目标:
class Foo:
def __init__(self):
self._example = 0
@property
def example(self):
return self._example
@example.setter
def example(self, value):
if value == 1:
print("Successful")
self._example = value
f = Foo()
f.example = 1
不过,我要警告你,不要过于沉迷于这种模式。这是一种很好的方法,可以最终得到难以调试的代码。使用基本类型是不可能的。可以通过定义对象和使用描述符来完成。使用observer设计模式,您可以确定触发回调事件所需的规则 在下面的示例中,ObservalEvar启用对属性更改的绑定。因此,“example”属性中的更改将触发对您定义的绑定规则的回调
class ObservableVar:
def __init__(self):
self._example = 0
self._observers = []
def __setattr__(self, name, value):
if name == 'example':
print("Example changed!")
for callback in self._observers:
callback(value)
super(ObservableVar, self).__setattr__(name, value)
def bind(self, callback):
self._observers.append(callback)
@property
def example(self):
return self._example
@example.setter
def example(self, value):
self._example = value
def callback_rule(example):
if example == 1:
print("Successful")
var = ObservableVar()
var.bind(callback_rule)
var.example = 1
处理类似的问题。请记住,变量和它引用的对象之间有区别。在python中,可以说它是一种反模式。