Python:如何继承和显示在class中定义的id,而不是必须在对象中定义它

Python: How to inherit and display the id defined in the class, rather than have to define it in the object

我有以下 Python 来自 www.testandtrack.io 问题的代码:

class Sales:
  def __init__(self,id):
    self.id=id
    id=321

val=Sales(123)
print(val.id)

这里的输出是: 123

我希望能够显示对象 id 的值,但它是 class 中最初定义的值,例如在本例中为“321”。我还想了解如何在需要时覆盖(如图所示),但在需要时保留 class 默认属性。

我试过在实例化时将其留空,但需要一个位置参数。

val=Sales()

我也试过从 'constructor' 函数中删除 id ,如下所示,但这也不起作用:

def __init__(self):

有人能给我指出正确的方向并给出解释吗?默认情况下,我希望每个对象都继承 class 的 id(或任何指定的属性),而不必在创建时显式定义值。当需要时,对于某些属性,我想为对象提供新值,尽管该值是在 class 中定义的。 (覆盖)

class Sales:
  def __init__(self,id):
    self.id=id
    self.id=321

val=Sales(123)
print(val.id)

输出将是 321

要编辑 Sales 的 id,您必须将 self.前。 Python 对此很严格

考虑到 321 是默认值,如果没有传递 id,你应该这样做

class Sales:
   def __init__(self, id=321):
      self.id=id

val = Sales(123)
print(val.id) 
val2 = Sales()
print(val2.id)

好的,我没听懂问题,抱歉。

这里有一个方法可以做你想做的事:

class Sales:
  def __init__(self):
    pass
  def set_id(self,id):
      self.id=id

val=Sales()
val.set_id(100)
print(val.id)

答案将是 100

class Sales:
  def __init__(self):
    pass
  def set_id(self,id):
      self.id=id

val=Sales()
val.set_id(100)
val.set_id(200)
print(val.id)

对于这一个,它将是 200