|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 bananatree 于 2020-3-17 11:05 编辑
我看了视频和我网上的一些博文,发现对于子类继承父类有一种情况没有提及。那就是当父类的def __init__(self,x,y):有参数输入的时候, 子类在对象实例化时给如何输入参数。下面的图片举了一个小甲鱼的课后例子。请大家多多指教 。emmm,简单说就是如何继承有参数输入的父类属性。
我的思路是连点成线,所以线类会继承点类的数据。我只会那种在点类中就明确点属性的方法,不会在实例化中在实例中输入属性的方法,大家帮忙看一下。
可以运行的程序(在点类中定义属性):
import math
class Point():
def __init__(self,x1=1,y1=1,x2=2,y2=2):
self.point1=[x1,y1]
self.point2=[x1,y2]
class Line(Point):
def __init__(self):
super().__init__()
self.x=self.point1[0]-self.point2[1]
self.y=self.point1[0]-self.point2[1]
def getlen(self):
return math.sqrt(self.x**2+self.y**2)
l=Line()
print(l.getlen())
不会再实例化中定义属性(报错):
import math
class Point():
def __init__(self,x1,y1,x2,y2):
self.point1=[x1,y1]
self.point2=[x1,y2]
class Line(Point):
def __init__(self):
super().__init__()
x=self.point1[1]-self.point2[1]
y=self.point1[2]-self.point2[2]
def getlen(self):
return sqrt(self.x**2+self.y**2)
l=Line(1,1,2,2)
print(l.getlen())
有几处错误。在你的基础上帮你修改了一下。 import math
class Point():
def __init__(self,x1,y1,x2,y2):
self.point1=[x1,y1]
self.point2=[x1,y2]
class Line(Point):
def __init__(self,x1,y1,x2,y2):#这里需要有参数,用来给父类传参
super().__init__(x1,y1,x2,y2)#给父类传参
self.x=self.point1[0]-self.point2[0]#x和y前面要写上self,两个point的下标写错了。
self.y=self.point1[1]-self.point2[1]
def getlen(self):
return math.sqrt(self.x**2+self.y**2)
l=Line(1,1,2,2)
print(l.getlen())
|
-
小甲鱼的课后问题
|