我有两个类:信息和连接。连接应该继承信息。我的最终目标是让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
这里有一个例子
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()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。