Python-如何自动编辑类对象值?
如何在指定类对象时使用一些规则更改该类对象? 例如:Python-如何自动编辑类对象值?,python,python-3.x,Python,Python 3.x,如何在指定类对象时使用一些规则更改该类对象? 例如: class Foo: x=0 if x < 0: x = -1 else: x = 1 p = Foo() p.x = 1234 print(p.X) Foo类: x=0 如果x
class Foo:
x=0
if x < 0:
x = -1
else:
x = 1
p = Foo()
p.x = 1234
print(p.X)
Foo类:
x=0
如果x<0:
x=-1
其他:
x=1
p=Foo()
p、 x=1234
印刷品(p.X)
所以当我打印p.x时,我希望打印1。但1234是印刷品。我该怎么办?您声明的第一个
x=0
是类属性。对于类的所有对象都是相同的
编写p.x
时,创建一个实例属性,即属于该特定对象的x
。这会在特定对象中隐藏Foo.x
(python属性查找就是这样工作的)
但是,该值仍然是该类其他对象的默认值,例如,如果创建新对象
foo2 = Foo()
print(f2.x) # prints 1
您必须使用setter函数使
x
a:
class Foo:
def __init__(self):
self.x = 1
@property
def x(self):
return self._x
@x.setter
def x(self, value):
if value < 0:
value = -1
else:
value = 1
self._x = value
欢迎来到stackoverflow!!这可能有助于您使用
self.x
而不是x
您想设置class属性Foo.x
还是对象属性p.x
?我知道了。谢谢:)您应该在Foo中初始化self.x
。\uuuuu init\uuuu
否则在设置前尝试读取x
会引发属性错误。
>>> foo = Foo()
>>> foo.x = 1234
>>> foo.x
1