我试着从这个视频中学习OOP https://www.youtube.com/watch?v=Ej_02ICOIgs&t=143s&ab_channel=freeCodeCamp.org
1:30:00是与我的问题相关的内容,但在此代码片段中,我将删除与问题无关的任何内容,仅代码片段就应该提供足够的上下文.
我的父类以名称、价格和数量作为参数. 我的子类有一个唯一的参数名为"BREAKED_PHONE". 问题集中在repr个左右
这是视频中显示的代码(排除不相关的东西)
class Item:
all = []
def __init__(self, name:str , price: float , quantity:int):
#Assign to self object
self.name = name
self.price = price
self.quantity = quantity
#action to execute
Item.all.append(self)
def __repr__(self):
return f'{self.__class__.__name__}("{self.name}", {self.price}, {self.quantity})'
class Phone(Item):
def __init__(self, name:str , price: float , quantity:int, broken_phone=0):
#call to super function to have access to all attributes
super().__init__(
name, price, quantity
)
#Assign to self object
self.name = name
self.price = price
self.quantity = quantity
因此,子类(Phone)也应该继承父类(Item)的repr,但当我调用Phone.all时,它只返回
f'{self.__class__.__name__}("{self.name}", {self.price}, {self.quantity})'
个
排除子类参数(BREAKED_PHONE)是正常做法吗?子元素们的阶级争论不应该是这样的吗?
f'{self.__class__.__name__}("{self.name}", {self.price}, {self.quantity}, {self.broken_phone})'
个
所以我的问题是,像这样排除它是正常的吗?如果不是,我应该如何解决这个问题.视频只是告诉我在家长类中只使用repr,而不解决这个问题.