开发者社区> 问答> 正文

如何在python中继承另一个类的属性

我有两个类:信息和连接。连接应该继承信息。我的最终目标是让Connection能够访问Info的属性,这样对于创建的每个Connection实例,都会传入一个Info的实例。然后连接将访问Info的这个属性实例。 我一直在论坛和教程,我理解的概念,但我所尝试的一切似乎没有得到这个工作。我试过使用super(),然后调用Info的_init__内连接的_init__函数,但毫无效果。 作为一个测试,使用下面的代码,我尝试通过Connection类的一个实例(例如Connection.slot_number)访问属性slot_number,但是没有成功。我得到的错误信息没有属性'slot_number',即使信息显然有一个名为slot_number的属性。谁能给我解释一下怎么做吗?

class Info(object):
    def __init__(self, slot_number, board_type, board_part_num, prod_part_num):
        self.slot_number = slot_number
        self.board_type = board_type
        self.board_part_num = board_part_num
        self.prod_part_num = prod_part_num

class Connection(Info):
    def __init__(self, system, sn, phase, ip, port):
        super(Info, self).__init__()
        self.system = system
        self.sn = sn
        self.slot_number = slot_number
        self.phase = phase
        self.ip = ip
        self.port = port

问题来源StackOverflow 地址:/questions/59380124/how-to-inherit-another-classs-attributes-in-python

展开
收起
kun坤 2019-12-28 14:32:49 394 0
1 条回答
写回答
取消 提交回答
  • 这里有一个例子

    class Person():
      def __init__(self, name, age):
        self.name = name
        self.age = age
    
      def getName(self):
        return self.name
      def getAge(self):
        return self.age
    
    
    class Student(Person):
      def __init__(self, name, age, id):
        self.id = id
        super().__init__(name, age)
    
      def getId(self):
        return self.id
    
    new_student = Student('Student', 20, 666)
    
    print(new_student.getName())
    
    
    

    关于你的具体情况:

    class Info(object):
        def __init__(self, slot_number, board_type, board_part_num, prod_part_num):
            self.slot_number = slot_number
            self.board_type = board_type
            self.board_part_num = board_part_num
            self.prod_part_num = prod_part_num
    
         def getSlotNumber():
              return self.slot_number
    
    class Connection(Info):
        def __init__(self, system, sn, phase, ip, port, slot_number, board_type, board_part_num, prod_part_num):
            super().__init__(slot_number, board_type, board_part_num, prod_part_num)
            self.system = system
            self.sn = sn
            self.slot_number = slot_number
            self.phase = phase
            self.ip = ip
            self.port = port
    
    

    你可以通过创建get方法来访问Info的属性。

    new_connection = Connection('system', 'phase', 'ip', 'port', 'slot_number', 'board_type', 'board_part_num', 'prod_part_num')
    new_connection.getSlotNumber()
    
    2019-12-28 14:33:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载