python中类的继承与扩展、私有方法和属性,以及forward()函数

本文详细介绍了Python类的私有方法和属性,它们只能被类内部访问,不能直接通过实例对象访问。同时阐述了类的继承与扩展,如何使用super()调用父类方法并进行扩展。此外,还解析了Python中的forward问题,特别是当继承nn.Module时,为何必须继承其初始化函数以确保__call__()和forward()的正常工作。
部署运行你感兴趣的模型镜像

python类的私有方法和属性(即前面加__(或_)的方法或属性):

解释:类的私有方法和属性,可以由类内部的方法来访问,但是不可以由类的实例对象来访问。若类的实例对象想直接访问私有方法或属性,则需要:实例._类名__变量名的形式。

参考:https://www.cnblogs.com/randomlee/p/9026105.html 

python类的继承与扩展:

解释:可以通过将super().方法名X(参数)放在子类同名方法X的适当位置来对父类方法X的全部内容进行继承,然后可以进行扩展。(注意,在父类方法中定义的类属性,在子类中继续可用)

参考:https://blog.youkuaiyun.com/hef97/article/details/118418747 

python中的forward问题:

解释:(1)python通过类名来创建对象(这时会调用类的初始化函数),而通过实例化对象会自动调用内置的__call__()函数。因此,我们可以重写__call__()函数,来实现具体的操作,最常见的就是将参数传入forward()来进行操作。

(2)至于nn.Module,同样是有__call()__函数调用了farword()函数。因此,我们可以直接通过实例化对象来执行forward()函数。但是,由于__call()__函数内很多信息(不仅仅是forward()函数)需要nn.Module.__init()__来初始化,如果不继承nn.Module.__init()__而重写__init()__导致__call()__无法正常运行,进而无法调度forward()。因此,在继承nn.Module时,一定要继承nn.Module.__init()__

参考:https://zhuanlan.zhihu.com/p/357021687 

 

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值