星星仙人QAQ 发表于 2021-1-9 00:41

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()

古月不傲 发表于 2021-1-9 01:21



运行正常阿

张大炮xmz 发表于 2021-1-9 02:00

子类的构造函数中调用的父类的构造函数中需要加self吗?
people.__init__(self,n,a,w)
我也是刚学,看到这里有些奇怪,问一下

OwO 发表于 2021-1-9 07:32

没错啊,照着复制正常运行

5ud0 发表于 2021-1-9 08:17

没问题,可以正常运行

cy5520 发表于 2021-1-9 08:37

坏小子69 发表于 2021-1-9 09:04

张大炮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)

Cool_Breeze 发表于 2021-1-9 09:34

# 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()

144728995505 发表于 2021-1-9 10:09

想看看报错

Aircus 发表于 2021-1-9 10:21

name = ''
age = 0
grade = ''
没啥问题,只是这些定义完全可以去掉
页: [1] 2
查看完整版本: Python3 学习到类和对象,按照代码执行出错,求大神看看哪里错了