class 类名:
def __init__(self):
self.a = None
self.b = None
def 函数(self,x,y):
self.x = x
self.y = y
A = 类名()
B = 类名()
A.函数(10,20)
print(B.x,B.y) 将会输出10,20
即同一文件内对同一类的声明,对参数是继承性的。
该问题出自《深度学习入门》该书135页乘法层的实现:
class MulLayer:
def __init__(self):
self.x = None
self.y = None
def forward(self,x,y):
self.x = x
self.y = y
out = x*y
return out
def backward(self,dout):
dx = dout*self.y #翻转x和y
dy = dout*self.x
return dx,dy
apple = 100
apple_num = 2
tax = 1.1
#layer
mul_apple_layer = MulLayer()
mul_tax_layer = MulLayer()
#forward
apple_price = mul_apple_layer.forward(apple,apple_num)
price = mul_tax_layer.forward(apple_price,tax)
print(mul_apple_layer.x) #100
print(mul_apple_layer.y) #2
print(price) #220
# backward
dprice = 1
print(mul_tax_layer.x) #200
print(mul_tax_layer.y) #1.1
dapple_price,dtax = mul_tax_layer.backward(dprice)
dapple,dapple_num = mul_apple_layer.backward(dapple_price)
print(dapple,dapple_num,dtax) #2.2 110 200