java与python多态的区别_如果未调用父构造函数(与Java不同),多态性在Python中如何工作? - java...

因此,父类构造函数是在Java中调用的,而在Python中则不是。如果这意味着未创建父对象,那么如何在Python中成功调用def function-这是怎么回事?

Python代码

class Parent:

def __new__(self):

print(f"I am the real parent constructor Hahahah {self}")

return object.__new__(self)

def __init__(self):

print(f"I am the constructor of parent {self}")

def function(self):

print(f"I am parent's member function and my self value is {self}")

def over(self):

print(f"I am parent's O-function and my self value is {self}")

class Child(Parent):

def __new__(self):

print(f"I am the real chid constructor Hahahah {self}")

return object.__new__(self)

def __init__(self):

print(f"I am the initialize of child {self}")

def over(self):

print(f"I am the child's member O-function and my self value is {self}")

ch = Child()

ch.over()

ch.function()

以上Python代码的输出。

注意:没有打印I am the real parent constructor Hahahah。

I am the real chid constructor Hahahah

I am the initialize of child <__main__.Child object at 0x7f4bb5d997b8>

I am the child's member O-function and my self value is <__main__.Child object at 0x7f4bb5d997b8>

I am parent's member function and my self value is <__main__.Child object at 0x7f4bb5d997b8>

类似的Java代码

public class main {

public static void main(String[] args) {

Child ch = new Child();

ch.over();

ch.function();

}

}

class Parent {

Parent () {

System.out.println("In the parent class constructor | " + this);

}

public void function () {

System.out.println("In the member function of parent | " + this);

}

public void over () {

System.out.println("In the member O-function of parent | " + this);

}

}

class Child extends Parent {

Child () {

System.out.println("I the child class constructor | " + this);

}

public void over () {

System.out.println("In the member O-function of chlid | " + this);

}

}

上面的Java代码的输出

In the parent class constructor | code.Child@2a139a55

I the child class constructor | code.Child@2a139a55

In the member O-function of chlid | code.Child@2a139a55

In the member function of parent | code.Child@2a139a55

参考方案

Python和Java不同。

在Java中,扩展类必须始终调用父构造函数。为了使生活更轻松,如果父构造函数没有参数,则会首先自动调用它。现在,如果要像这样向Java Parent构造函数添加一个参数:

Parent (int i) {

System.out.println("In the parent class constructor | " + this);

}

您会发现以下编译错误:

There is no default constructor available in 'org.example.Parent'

这很有意义,当构造Child Java时不知道作为值i传递什么。因此,我们必须手动调用Parent构造函数:

Child () {

super(1);

System.out.println("I the child class constructor | " + this);

}

Python的不太严格。始终调用父构造函数仍然是一个好习惯,但是Python不需要您这样做。这是因为Python不是type safe。

现在让我们看看如果忘记调用父构造函数会发生什么:

class Parent:

def __init__(self):

self.i = 1

print(f"I am the constructor of parent {self}")

def printi(self):

print(self.i)

class Child(Parent):

def __init__(self):

pass

ch = Child()

ch.printi()

将会发生致命错误:

Traceback (most recent call last):

File "test.py", line 15, in

ch.printi()

File "test.py", line 7, in printi

print(self.i)

AttributeError: 'Child' object has no attribute 'i'

要修复此代码,您可以将以下行添加到Child init函数:

Parent.__init__(self)

如您所见,仍然创建了Parent类(因为您可以调用function方法。这再次是因为Python不太严格。In python an object can be created without calling the constructor.

Java-父类正在从子类中调用方法? - java

抱歉,我还是编码的新手,可能还没有掌握所有术语。希望您仍然能理解我的问题。我想得到的输出是:"Cost for Parent is: 77.77" "Cost for Child is: 33.33" 但是,我得到这个:"Cost for Parent is: 33.33" "Cost f…Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…Java Globbing模式以匹配目录和文件 - java

我正在使用递归函数遍历根目录下的文件。我只想提取*.txt文件,但不想排除目录。现在,我的代码如下所示:val stream = Files.newDirectoryStream(head, "*.txt") 但是这样做将不会匹配任何目录,并且返回的iterator()是False。我使用的是Mac,所以我不想包含的噪音文件是.DS_ST…直接读取Zip文件中的文件-Java - java

我的情况是我有一个包含一些文件(txt,png,...)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion):InputStream in = Main.class.getResourceAsStream("/resouces/zipfile/test.txt"); Buff…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux中统计java数量,linux 统计当前目录下文件数

查看当前目录下文件的个数ls -l | grep "^-" | wc -l查看当前目录下文件的个数&#xff0c;包括子目录里的。ls -lR| grep "^-" | wc -l查看某目录下文件夹(目录)的个数&#xff0c;包括子目录里的。ls -lR| grep "^d" | wc -l某目录下以.js结尾…

zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?

想从事游戏行业的建模的话&#xff0c;模型和贴图的知识都得学&#xff0c;MAYA和3DMAX只能说是基本要学的&#xff0c;Zbrush能够提升个人价值&#xff0c;之后能给你建好的模型做出好看的贴图&#xff0c;才能算是一个游戏建模方面能干活的合格从业人员。新手入门的话&#x…

linux 连接wifi不稳定,rtl8188ce 无线网不稳定终极解决方案 - 哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制...

先容我废话据说 realtek 的无线网卡就这个系列问题多多。以前连接不太稳定&#xff0c;但不会频繁掉线就凑活用了。自从不知哪次升级以来&#xff0c;掉线越来越频繁&#xff0c;最后已经发展到 10秒必掉 了&#xff0c;以至于要上网就得拼命到终端里重连网络。网上也有各种解决…

file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...

file.getpathFile API在Java中非常重要&#xff0c;因为它使文件系统可以访问Java程序。 尽管Java的文件API丰富&#xff0c;但是使用它们时仍需要了解很多细节。 关于文件路径的常见查询程序员之一是getPath() &#xff0c; getCanonicalPath()和getAbsolutePath()方法之间的区…

为什么python代码运行不了_为什么Python代码能运行但是PyCharm给我画红线?

PyCharm在遇到模块找不到时&#xff0c;会使用红色波浪线提醒开发者。这本来是一个非常好的功能&#xff0c;但却由于另外一个问题&#xff0c;会给一些Python初学者造成困扰。 这一篇文章&#xff0c;我们讲讲工作区导致的这个问题。 首先我们创建一个login.py文件&#xff0c…

linux 在线帮助,linux获取在线帮助

Linux系统的帮助文档非常丰富。帮助手册提供命令的使用说明。比如你若是想了解ls命令的用法&#xff0c;只需运行&#xff1a;$ man ls帮助手册旨在提供基础知识和参考信息&#xff0c;有时会有一些实例和交叉索引&#xff0c;但是基本没有那种教程式的文档。帮助手册会按系统排…

python的计算_python 计算方位角实例(根据两点的坐标计算)

知道两点坐标&#xff0c;怎么计算两点方向的方位角&#xff1f; 答&#xff1a;首先计算坐标增量dx&#xff0c;dy(两个对应坐标分量相减&#xff0c;终点的减始点的)。 若dx,dy中有一个为零时&#xff0c;根据另一个的正负决定方位角&#xff08;0&#xff0c;90&#xff0c;…

linux中samba详解,详解linux系列之samba的安装及配置

上篇博文中我介绍了FTP&#xff0c;今天我们来介绍一下samba实现文件共享。这个比FTP更好点&#xff0c;因为对用户的权限可以通过samba权限和系统权限交叉使用&#xff0c;取最严格的。可以让windows更容易的从linux系统上存取文件&#xff0c;还有samba也可以让linux上面的打…

saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...

saml2总览 最新版本的WSO2 Identity Server&#xff08;版本5.0.0&#xff09;配备了“应用程序身份验证框架”&#xff0c;该框架提供了很大的灵活性&#xff0c;可以对使用异构协议的各种服务提供商的用户进行身份验证。 它具有几个扩展点&#xff0c;可用于满足企业系统中常…

python做股票分析_利用Python进行股票投资组合分析(调试)

pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 "Python for Finance: Robo Advisor Edition" 这一版本的镜像包括Jupyter notebook和Python脚本&#xff0c;以及用pandas通过Jupyter notebook构…

c语言程序求一一组数平均值,编写求一组整数的和与平均值的程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼-----------------------------------------------------[习题6-1]编写求一组整数的和与平均值的程序。-----------------------------------------------------[分析]循序渐进&#xff0c;从易到难&#xff0c;分解为下列问题群。…

使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务

微服务架构不是免费的午餐 &#xff01; 微服务需要解耦&#xff0c;灵活&#xff0c;操作透明&#xff0c;数据感知和弹性。 过去几年的大多数材料仅讨论具有紧密耦合且不可扩展的技术&#xff08;如REST / HTTP&#xff09;的点对点体系结构。 这篇博客文章介绍了Apache Kafk…

python缩写词_如果连这10个Python缩写都不知道,那你一定是Python新手!

在本文中&#xff0c;我将告诉大家一些容易忽视的Python编程原理、规则和一些有趣的事实。 简介 对于许多开始学习编程的人来说&#xff0c;Python已经成为他们的首选。Python有非常直观的语法和支持动态类型的灵活性。此外&#xff0c;它是一种解释语言&#xff0c;这使得使用…

单片机控制三相异步电动机正反转c语言程序,请用PLC控制一台普通三相异步电动机的正反转控制,设计其控制程序梯形图及主电路...

PLC的编程方法及步骤。总的步骤主要有三步&#xff1a;一、根据电路图选择电器元件及PLC的型号&#xff0c;其中包括确定PLC的输入输出点位、确定PLC的输出类型&#xff0c;也需考虑某些功能是否能扩展、价格等&#xff1b;二、设计好PLC控制的外围元器件的原理图。这里面包括有…

0x80070003系统找不到指定路径_Win7系统中gpedit.msc找不到应该如何解决?

Win7x系统gpedit.msc找不到怎么办&#xff1f;最近有用户反映&#xff0c;电脑当中的gpedit.msc找不到了&#xff0c;gpedit.msc就是我们的策略组&#xff0c;对于我们的电脑来说是非常重要的&#xff0c;那么gpedit.msc找不到应该如何解决呢&#xff1f;接下来就为大家分享win…

c语言回文数递归,c语言问题~~~回文数!!急,拜托高人指点!!

满意答案wyhjjq12014.01.27采纳率&#xff1a;53% 等级&#xff1a;12已帮助&#xff1a;10413人添加上满足你补充要求的C程序:#includeint palindrome(unsigned int x){unsigned int y;unsigned int s0;yx;while(y>0){ss*10y%10;yy/10;}if(sx)return 1;elsereturn 0;}vo…

jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)

jboss架构&#xff08;文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 &#xff08; John Hurlocker&#xff09;合着&#xff09; 在这周的技巧中&#xff0c;我们将放慢速度&#xff0c;并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 在谈论部署体系结构时&#xf…

snvr client怎么使用_TCGA官方工具gdc-client.exe的安装及使用

在TCGA数据下载过程中&#xff0c;会提示使用Download a manifest for use with theGDC Data Transfer Tool​gdc.cancer.gov实现过程&#xff1a;1.下载gdc-client的压缩文件&#xff1b;gdc-client_v1.4.0_Windows_x64.zip2.将上述压缩文件copy到一个英文文件名称的文件夹内&…

c语言 源文件未编译,源文件未编译什么意思

语音内容&#xff1a;大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。源文件未编译&#xff0c;即在运行前要对源代码进行编译链接&#xff0c;然后才能运行。编译利用编译程序从源语言编写的源程序产生目标程序的过程&#xff0c;…

JDK 14中的常规,安全和确定性外部内存访问

在“ JDK 14 Rampdown&#xff1a;Build 27 ”一文中&#xff0c;我总结了JDK 14 Early Access Build &#xff03;27中新增的许多针对JDK 14的功能。 已经存在另一种JDK 14 Early Access Build&#xff0c;并且此[ Build 28&#xff08;2019/12/18&#xff09; ]包括一个特别有…