Проблема Наследования классов Python

Нашел другое решение, используя модуль bitstring .

import bitstring
f1 = bitstring.BitArray(float=1.0, length=32)
print f1.read('bin')

Выход:

00111111100000000000000000000000

16
задан S.Lott 29 May 2009 в 20:41
поделиться

3 ответа

Три вещи:

  1. Вам нужно явно вызвать конструктор. Он не вызывается автоматически, как в C ++
  2. Использовать класс нового стиля, унаследованный от объекта
  3. С классом нового стиля используйте доступный метод super ()

Это будет выглядеть следующим образом:

class Person(object):
    AnotherName = 'Sue Ann'
    def __init__(self):
        super(Person, self).__init__()
        self.FirstName = 'Tom'
        self.LastName = 'Sneed'

    def get_name(self):
        return self.FirstName + ' ' + self.LastName

class Employee(Person):
    def __init__(self):
        super(Employee, self).__init__()
        self.empnum = 'abc123'

    def get_emp(self):
        print self.AnotherName
        return self.FirstName + ' ' + 'abc'

Рекомендуется использовать super, поскольку он также будет корректно обрабатывать вызовы конструкторов только один раз в множественных случаях наследования (при условии, что каждый класс в графе наследования также использует супер). Это также на одно место меньше, чем нужно менять код, если / когда вы меняете то, от чего унаследован класс (например, вы выделяете базовый класс и изменяете деривацию, и вам не нужно беспокоиться о том, что ваши классы вызывают неправильного родителя). конструкторы). Также на фронте MI вам нужен только один супер-вызов для правильного вызова всех конструкторов базового класса.

25
ответ дан 30 November 2019 в 16:19
поделиться

Сотрудник должен явно вызвать родительский __init__ (не init):

 class Employee(Person):  
    def __init__(self):  
         Person.__init__(self)  
         self.empnum = 'abc123'  
5
ответ дан 30 November 2019 в 16:19
поделиться

Вы должны явно вызвать функцию инициализации суперкласса:

class Employee(Person):
    def __init__(self):
        Person.__init__(self)
        self.empnum = "abc123"
9
ответ дан 30 November 2019 в 16:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: