关于python继承的疑问

下面代码,子类实例化时必须输入4个参数,是传递给父类吗?我发现无论前三个
参数是什么,都不影响输出结果。可以解释一下吗?

class computer():
      def __init__(self,cpu,memory,monitor):
            self.cpu='intel'
            self.memory='samsung'
            self.monitor='boe'

class lenovo(computer):
      def __init__(self,cpu,memory,monitor,price):
            super().__init__(cpu,memory,monitor)
            self.price=price

z=lenovo(1,2,3,'3999元')

print(z.cpu)
print(z.memory)
print(z.monitor)
print(z.price)

同样的情况,请看下面代码,子类实例化时必须输入4个参数,是传递给父类吗?我发现输入什么参数,就输出什么参数。可以解释一下吗?

class computer():             
      def __init__(self,cpu,memory,monitor):
            self.cpu=cpu
            self.memory=memory
            self.monitor=monitor


class lenovo(computer):                         
      def __init__(self,cpu,memory,monitor,price):    
            super().__init__(cpu,memory,monitor)
            self.price=price                        

z=lenovo('intel','samsung','boe','3999元')

print(z.cpu)
print(z.memory)
print(z.monitor)
print(z.price)

谢谢!

阅读 2.3k
4 个回答

第一个例子中的
init函数虽然传入了三个参数,但是这个参数并没有被用上如下:

def __init__(self,cpu,memory,monitor):
      self.cpu='intel'
      self.memory='samsung'
      self.monitor='boe'

也就是说,不管你传什么值,都不影响结果 cpu='intel' memory='samsung' monitor='boe'的结果。

第二个例子中的init函数

def __init__(self,cpu,memory,monitor):
      self.cpu=cpu
      self.memory=memory
      self.monitor=monitor

函数接收了初始化函数传递进来的值,也就是说cpu memory monitor 会根据你的初始化函数传入值的不同而改变。

问题出在computer.__init__。第一个例子中初始化的是固定值,第二个例子则利用传递的参数进行初始化。

没懂你的表述是什么意思,你觉得输出应该是什么样子?

self 是一个特殊的参数,你可以把它理解为一个对象,self里面的属性是子类和父类是共享的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题