尝试在继承时增加变量 python

Trying to Increment a variable on its inheritance python

您好,我是 OOP 的新手 python,我目前正尝试在创建父 class 的实例时从子 Class 增加一个用户 ID 变量使用继承它似乎无法识别来自其​​父 class 的 Id 变量。这里的例子

class User:
    _ID = 0
    def __init__(self, name):
        self.name = name
        self.id = self._ID
        self.__class__._ID += 1

class Customer(User):
    def __init__(self, name):

    def lastname(self):

       return "self.name.split()[-1]"

如果我这样做,我可以访问 class 属性

>> Chris = User("Christopher Allan")
>> Chris.id
>> 0

当我尝试 运行

>> Andy = Customer('Andy Smith')
>> Andy.id 

>>  Traceback (most recent call last):
    File "<pyshell#83>", line 1, in <module>
    Andy.id
    AttributeError: 'Customer' object has no attribute 'id'

更新

我完成了客户 Class 的其余部分,这是代码对我不起作用的原因,对于我以前使用过的人来说很抱歉,至于问题的简短性,我没有测试它是否会使用传递给客户 class.

Customer 没有作为基础的 id 属性 class (User) 从来没有调用过它的 __init__ 方法,你也没有否则定义它。由于您正在覆盖基础 class' __init__ 方法,因此您还需要调用 super 以便继承的代码也被调用:

class Customer(User):
    def __init__(self, name):
        super(Customer, self).__init__(name)

您的代码在 and 中对我都有效。相反,我建议错误在于第 3 行的缩进错误。

>>> class User:
...         _ID = 0
...         def __init__(self, name):
...                 self.name = name
...                 self.id = self._ID; self.__class__._ID += 1
... 
>>> class Customer(User):
...       pass
... 
>>> Andy = Customer('Andy Smith')
>>> Andy.id
0
>>> import sys
>>> import sys
>>> sys.version
'2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>> 

>>> class User:
...         _ID = 0
...         def __init__(self, name):
...                 self.name = name
...                 self.id = self._ID; self.__class__._ID += 1
... 
>>> class Customer(User):
...       pass
... 
>>> Andy = Customer('Andy Smith')
>>> Andy.id
0
>>> import sys
>>> sys.version
'3.4.0b2 (v3.4.0b2:ba32913eb13e, Jan  5 2014, 11:02:52) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>>