当前位置: 首页 > news >正文

Python和java中super的使用用法(有点小语法上的差距,老忘就在这里置顶了)

文章目录

    • 1 在 Java 中:
    • 2 在 Python 中:


在 Java 和 Python 中,子类调用父类方法的语法略有不同:

1 在 Java 中:

使用 super 关键字:在子类中,可以使用 super 关键字来调用父类的方法。super 关键字可以用来引用父类的构造方法或普通方法。

  • 调用父类构造方法:在子类的构造方法中使用 super() 调用父类的构造方法。例如:
public class Child extends Parent {public Child() {super(); // 调用父类的无参构造方法(java里面这种无参构造java虚拟机就算你不写也会自动加上)super(参数); // 调用父类的有参构造方法}
}

如果父类有带参数的构造方法,可以通过 super(参数) 的形式传递参数给父类构造方法。

  • 调用父类普通方法:在子类中可以使用 super.方法名() 的形式调用父类的普通方法。例如:
public class Parent {public void printMessage(参数) {System.out.println("Hello from Parent");}
}public class Child extends Parent {public void printMessage() {super.printMessage(参数); // 调用父类的 printMessage 方法System.out.println("Hello from Child");}
}

2 在 Python 中:

使用 super() 函数:Python 中的子类可以使用 super() 函数来调用父类的方法。super() 函数用于获取父类的对象,并且可以调用父类的方法。

  • 调用父类构造方法:在子类的 init 方法中使用 super().init() 来调用父类的构造方法。例如:
class Parent:def __init__(self):print("Parent initialized")class Child(Parent):def __init__(self):super().__init__(参数)  # 调用父类的构造方法print("Child initialized")
  • 调用父类普通方法:同样地,在子类中可以使用 super().方法名() 的形式调用父类的普通方法。例如:
class Parent:def print_message(self):print("Hello from Parent")class Child(Parent):def print_message(self):super().print_message()  # 调用父类的 print_message 方法print("Hello from Child")
  • 另外,在pytorch搭建网络还延续了,Python2的super(当前类,self)使用习惯,在 Python 2 中,super 需要传递两个参数:当前类和 self 对象。但现在Python3这种语法已经可以抛弃了,直接super(),后面空括号就可以了,但pytorch大家搭建网络都还延续了Python2的那个习惯就随大流吧!
class RNN(nn.Module):def __init__(self):super(RNN, self).__init__() # super().__init__() python3现在只需要这样self.rnn = nn.LSTM(         # if use nn.RNN(), it hardly learnsinput_size=INPUT_SIZE,hidden_size=64,         # rnn hidden unitnum_layers=1,           # number of rnn layerbatch_first=True,       # input & output will has batch size as 1s dimension. e.g. (batch, time_step, input_size))self.out = nn.Linear(64, 10)def forward(self, x):# x shape (batch, time_step, input_size)# r_out shape (batch, time_step, output_size)# h_n shape (n_layers, batch, hidden_size)# h_c shape (n_layers, batch, hidden_size)r_out, (h_n, h_c) = self.rnn(x, None)   # None represents zero initial hidden state# choose r_out at the last time stepout = self.out(r_out[:, -1, :])return out

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端程序员常犯的错误-本地缓存相关bug和技术思考
  • 文心一言 VS 讯飞星火 VS chatgpt (315)-- 算法导论22.3 7题
  • Nginx 高级 扩容与高效
  • 中间件安全:Nginx 解析漏洞测试.
  • CSP 初赛复习 :计算机网络基础
  • java~反射
  • 用Python打造精彩动画与视频,3.2 基本的剪辑和合并操作
  • 【Vulnhub系列】Vulnhub Lampiao-1 靶场渗透(原创)
  • Spring提供的AOP支持是什么
  • VMware虚拟机设置桥接网络固定IP
  • 社区养老服务小程序的设计
  • 规控面试常见问题
  • 【AI-12】浅显易懂地说一下损失函数
  • css-伪类选择器
  • SpringBoot使用泛型出入参+策略模式+反射+缓存实现统一POST接口入口
  • git 常用命令
  • JavaScript创建对象的四种方式
  • JavaScript设计模式与开发实践系列之策略模式
  • Java多线程(4):使用线程池执行定时任务
  • js作用域和this的理解
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode46 Permutation 排列组合
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • sessionStorage和localStorage
  • web标准化(下)
  • 排序算法之--选择排序
  • 前端面试总结(at, md)
  • 新版博客前端前瞻
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #1015 : KMP算法
  • #知识分享#笔记#学习方法
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)STL算法之比较
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm高校实验室 毕业设计 800008
  • (三十五)大数据实战——Superset可视化平台搭建
  • (译) 函数式 JS #1:简介
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .Net8 Blazor 尝鲜
  • .NET企业级应用架构设计系列之应用服务器
  • @property @synthesize @dynamic 及相关属性作用探究
  • [.net] 如何在mail的加入正文显示图片
  • [AIGC codze] Kafka 的 rebalance 机制
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [android] 手机卫士黑名单功能(ListView优化)
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BZOJ4010]菜肴制作
  • [C++] 统计程序耗时
  • [C++核心编程](四):类和对象——封装