Python3 学习到类和对象,按照代码执行出错,求大神看看哪里错了
#!/usr/bin/python3#类定义
class people:
#定义基本属性
name = ''
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#调用父类的构函
people.__init__(self,n,a,w)
self.grade = g
#覆写父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
# 实例化类
s = student('ken',10,60,3)
s.speak()
运行正常阿 子类的构造函数中调用的父类的构造函数中需要加self吗?
people.__init__(self,n,a,w)
我也是刚学,看到这里有些奇怪,问一下 没错啊,照着复制正常运行 没问题,可以正常运行 张大炮xmz 发表于 2021-1-9 02:00
子类的构造函数中调用的父类的构造函数中需要加self吗?
people.__init__(self,n,a,w)
我也是刚学,看到 ...
使用 people 调用父类构造函数是需要加上 self
people.__init__(self, n, a, w)
平常调用父类函数 使用的是 super(),不需要 self
super().__init__(n, a, w)
# coding=utf-8
#!/usr/bin/env python3
#类定义
class people:
#定义基本属性
name = ''
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#调用父类的构函
# people.__init__(self,n,a,w)
# super(student, self).__init__(n,a,w) # 直接使用 super
super().__init__(n,a,w) # 直接使用 super 单继承
self.grade = g
#覆写父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
# 实例化类
s = student('ken',10,60,3)
s.speak() 想看看报错 name = ''
age = 0
grade = ''
没啥问题,只是这些定义完全可以去掉
页:
[1]
2