本帖最后由 paypojie 于 2022-6-26 22:36 编辑
面向对象的疑惑之处
代码是这样的[Python] 纯文本查看 复制代码 #!/usr/bin/python
# -*- coding: UTF-8 -*-
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print ("调用父类构造函数")
def parentMethod(self):
print ('调用父类方法')
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print ("父类属性 :", Parent.parentAttr)
class Child(Parent): # 定义子类
def __init__(self):
print ("调用子类构造方法")
def childMethod(self):
print ('调用子类方法')
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值
以上代码执行结果如下:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 调用子类构造方法 调用子类方法 调用父类方法 父类属性 : 200 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 但是有一点看不太明白 运行c.childMethod() # 调用子类的方法 为啥输出结果会是 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 调用子类构造方法 调用子类方法 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 不应该只会输出 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 调用子类方法 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 想不明白 为啥会多输出个 调用子类构造方法 难道是调用 c.childMethod()方法时 就先自动调用__init__()方法 有点难搞 |