理解Python中的对象

8 投票
6 回答
543 浏览
提问于 2025-04-16 06:37

我对Python的对象模型有点困惑。我有两个类,其中一个是从另一个类继承的。

class Node():
  def __init__(identifier):
    self.identifier = identifier

class Atom(Node):
  def __init__(symbol)
    self.symbol = symbol

我想做的不是重写__init__()这个方法,而是创建一个atom的实例,这个实例会有symbolidentifier这两个属性。

像这样:

Atom("Fe", 1) # will create an atom with symbol "Fe" and identifier "1"

所以我希望在创建了Atom的实例后,可以访问Atom.identifier和Atom.symbol。

我该怎么做呢?

6 个回答

3

在创建一个类的时候,你需要在声明中使用“self”这个词。之后你可以定义其他的参数。如果你想要继承其他类的属性和方法,就要调用父类的init方法:

>>> class Node():
...   def __init__(self, identifier):
...     self.identifier = identifier
...
>>>
>>> class Atom(Node):
...   def __init__(self, symbol, identifier):
...     Node.__init__(self, identifier)
...     self.symbol = symbol
...
>>>
>>>
>>> fe = Atom("Fe", 1)
>>> fe.symbol
'Fe'
>>> fe.identifier
1
>>>
6

你需要手动调用父类的__init__方法。

class Atom(Node):
  def __init__(self, symbol, identifier)
    Node.__init__(self, identifier)
    self.symbol = symbol
7
>>> class Node(object):
...     def __init__(self, id_):
...             self.id_ = id_
... 
>>> class Atom(Node):
...     def __init__(self, symbol, id_):
...             super(Atom, self).__init__(id_)
...             self.symbol = symbol
... 
>>> a = Atom("FE", 1)
>>> a.symbol
'FE'
>>> a.id_
1
>>> type(a)
<class '__main__.Atom'>
>>> 

在你的代码中,继承自对象是个好主意。

撰写回答