如何定义从零 class 继承的 class 允许您修改 self._x 变量
How to define a class inherited from the Zero class that allows you to modify the self._x variable
这是我的零 class:
class ZeroClass():
def __init__(self, x):
self._x = x
def __call__(self, w):
return w * self._x
如果我 运行 下面的代码,它 returns 500:
s = ZeroClass(100.)
print(s(5))
现在,我需要实现 class 'AdjustZero' 允许通过 xSet
方法
更改变量 self._x
class AdjustZero(ZeroClass):
def xSet():
如何做到这一点?
你只需要像那样分配变量。我假设你的 Zero
class 只是你的 Scale
class.
class Scale:
def __init__(self, x):
self._x = x
def __call__(self, w):
return w * self._x
class AdjustZero(Scale):
def xSet(self, x):
self._x = x
s = AdjustZero(100.)
print(s(5))
s.xSet(10)
print(s(5))
输出为:
500.0
50
首先,如果你想让它成为零 class,那么 Scale 的名称应该是“Zero”,就像这样:class Zero:
。可以将比例重命名为零来执行此操作。 Class 不从其他 class 继承的定义也不需要括号*。
接下来,class 的方法都应该有一个参数“self”,例如:def xSet(self)
。 xSet(self) 还需要您设置的新值,因此也需要作为参数:xSet(self, new_x)
。最后,方法需要调整self._x,改为new_x,所以:
class AdjustZero(Zero):
def xSet(self, new_x):
self._x = new_x
另请注意:如果您希望零的子 class 的所有刻度都具有可调零,则可以将 xSet 方法移动到零 class.
为清楚起见,保留名称“Scale”并使 AdjustZero 继承自 Scale 也可能有意义。
*Classes 在 Python 3 中隐式继承自“object”,而在 Python 2 中,必须通过将 classes 定义为class class_name(object):
如果这是针对 Python 2 的任何方式,那么您编写的所有 classes 都应该明确地继承自对象。
这是我的零 class:
class ZeroClass():
def __init__(self, x):
self._x = x
def __call__(self, w):
return w * self._x
如果我 运行 下面的代码,它 returns 500:
s = ZeroClass(100.)
print(s(5))
现在,我需要实现 class 'AdjustZero' 允许通过 xSet
方法
self._x
class AdjustZero(ZeroClass):
def xSet():
如何做到这一点?
你只需要像那样分配变量。我假设你的 Zero
class 只是你的 Scale
class.
class Scale:
def __init__(self, x):
self._x = x
def __call__(self, w):
return w * self._x
class AdjustZero(Scale):
def xSet(self, x):
self._x = x
s = AdjustZero(100.)
print(s(5))
s.xSet(10)
print(s(5))
输出为:
500.0
50
首先,如果你想让它成为零 class,那么 Scale 的名称应该是“Zero”,就像这样:class Zero:
。可以将比例重命名为零来执行此操作。 Class 不从其他 class 继承的定义也不需要括号*。
接下来,class 的方法都应该有一个参数“self”,例如:def xSet(self)
。 xSet(self) 还需要您设置的新值,因此也需要作为参数:xSet(self, new_x)
。最后,方法需要调整self._x,改为new_x,所以:
class AdjustZero(Zero):
def xSet(self, new_x):
self._x = new_x
另请注意:如果您希望零的子 class 的所有刻度都具有可调零,则可以将 xSet 方法移动到零 class.
为清楚起见,保留名称“Scale”并使 AdjustZero 继承自 Scale 也可能有意义。
*Classes 在 Python 3 中隐式继承自“object”,而在 Python 2 中,必须通过将 classes 定义为class class_name(object):
如果这是针对 Python 2 的任何方式,那么您编写的所有 classes 都应该明确地继承自对象。