python - 如何在基类中打印父类的实例?
问题描述
当我将类继承到 Sports 并在 init 方法中定义值时,我能够打印 Class Student 的名称。但我无法弄清楚如何打印创建学生类时给出的名称而不在运动类中定义名称,
当我在创建对象时注释掉Student.__init__(self, 1, "name1", "addr1", 123456789, "std2@gmail.com", 1, 2021, "english")
并定义值时,我想打印出这些值。
class Student:
def __init__(self, sid, name, addr, phno, mailid, sec, year, sub):
self.sid = sid
self.name = name
self.addr = addr
self.phno = phno
self.mailid = mailid
self.sec = sec
self.year = year
self.sub = sub
def printStudent(self):
print("name",self.name,"sid",self.sid,"sec",self.sec,"year",self.year,"sub",
self.sub, "address",self.addr,"mailid",self.mailid,"phno",self.phno)
class Sports(Student):
def __init__(self, nofsports, nofawards):
Student.__init__(self, 1, "name1", "addr1", 123456789, "std2@gmail.com", 1, 2021,
"english")
self.nofsports = nofsports
self.nofawards = nofawards
def printSports(self):
print("name", self.name)
s1 = Student(2,"name2","addr2",1221232332,"std1@gmail.com",1,2020,"math")
s2 = Sports(2, 2)
s2.printSports()
当我在创建对象时注释掉Student.__init__(self, 1, "name1", "addr1", 123456789, "std2@gmail.com", 1, 2021, "english")
并定义值时,我想打印出这些值。
顺便说一句,我正在学习继承和 python 的新手,我不明白为什么 python 不能打印Student
我继承的类的实例,可能是因为它不是类属性?请告诉我...
解决方案
通常,子类__init__
方法采用其超类的所有参数,以及子类需要的任何附加参数。然后它可以将公共参数传递给超类的__init__
方法。
class Sports(Student):
def __init__(self, sid, name, addr, phno, mailid, sec, year, sub, nofsports, nofawards):
super().__init__(sid, name, addr, phno, mailid, sec, year, sub)
self.nofsports = nofsports
self.nofawards = nofawards
def printSports(self):
print("name", self.name)
s2 = Sports(1, "name1", "addr1", 123456789, "std2@gmail.com", 1, 2021, "english", 2, 2)
推荐阅读
- nexus - Nexus 版本从 3.20.1 升级到 3.22.1-02
- javascript - 如何使用 D3 在最后一个栏/项目的右端设置圆圈
- sql - 在生成同时属于名为“CS”和“EE”的专业的所有学生列表时遇到问题
- java - 为什么 Kotlin 中的 Any 只有 3 个方法,而 Java 中的 Object 有 10+?
- python - 如果 for 循环嵌套在内部,则忽略 while 条件
- javascript - 从 getElementById innerHTML 清除数据?
- pytorch - 如何解决此模型的尺寸不匹配问题?
- javascript - 如何在地理点字段上检查 firebase data() 的空值
- c - 如何在指针数组中初始化结构的字段?
- android - android 上禁用了flutter_webview_plugin 全屏选项