理解Python中的对象
我对Python的对象模型有点困惑。我有两个类,其中一个是从另一个类继承的。
class Node():
def __init__(identifier):
self.identifier = identifier
class Atom(Node):
def __init__(symbol)
self.symbol = symbol
我想做的不是重写__init__()这个方法,而是创建一个atom的实例,这个实例会有symbol和identifier这两个属性。
像这样:
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'>
>>>
在你的代码中,继承自对象是个好主意。