面向对象的一些疑惑?
本帖最后由 paypojie 于 2022-6-26 22:36 编辑面向对象的疑惑之处
代码是这样的#!/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__()方法有点难搞 c.childMethod()中的c从哪里来的,不就是c = Child()这句实例化出来的。类实例化会自动调用__init__方法 本帖最后由 paypojie 于 2022-6-26 22:39 编辑
grekevin 发表于 2022-6-26 22:11
c.childMethod()中的c从哪里来的,不就是c = Child()这句实例化出来的。类实例化会自动调用__init__方法
差不多懂了 {:17_1062:}
实例化类 也就是说 创建实例对象 c = Child() 就会自动调用初始化方法__init__()
paypojie 发表于 2022-6-26 22:25
差不多懂了
实例化类 也就是说 创建实例对象 c = Child() 就会自动调用初始化方法__init__( ...
是这样的,实例化一个类就会调用__init__,销毁(del)一个实例就会调用__del__ 三滑稽甲苯 发表于 2022-6-26 22:56
是这样的,实例化一个类就会调用__init__,销毁(del)一个实例就会调用__del__
谢了 虽然差不多理解了:victory: 在创建对象的时候就会调用构造函数,你 c = Child() 这里 会自动调用构造函数的 Keing 发表于 2022-6-27 09:26
在创建对象的时候就会调用构造函数,你 c = Child() 这里 会自动调用构造函数的
嗯呢 嘿嘿:lol __init__ 理解为初始化功能你就会明白了。可以看下我的这张图。 __init__在你创建对象的时候就会被调用 xyz349925756 发表于 2022-6-27 15:42
__init__ 理解为初始化功能你就会明白了。可以看下我的这张图。
基本上懂了{:1_893:}
页:
[1]
2