首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么超级函数不能获取类属性呢?

超级函数(super function)是指在面向对象编程中,子类继承父类的方法时,可以通过super()函数来调用父类的方法。它具有访问父类方法和属性的能力,但无法直接访问父类的类属性。

这是因为类属性是属于类的,在类定义阶段就已经存在,并且被所有实例共享。而实例方法(包括父类和子类的方法)是绑定在实例上的,可以通过self来访问实例属性,但无法直接访问类属性。

当使用超级函数调用父类方法时,它只能访问到父类定义的方法和父类实例属性,无法直接访问到父类的类属性。这是因为超级函数在调用父类方法时,实际上是在调用父类的方法绑定到子类实例上,而不是在调用父类本身。由于类属性是属于类的,所以不能通过实例来访问。

如果在子类中需要使用父类的类属性,可以通过类名来访问,例如父类名.类属性名。另外,也可以在子类中重新定义同名的类属性,以覆盖父类的类属性。

总结起来,超级函数不能获取类属性的原因是因为它是通过子类实例来调用父类方法,无法直接访问父类的类属性。如果需要使用父类的类属性,可以通过类名来访问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python编程中属性获取、设置、判断是否存在等,实战hasattr和getattr函数的应用案例!

那么接口是怎样的? 接口:理解为一种规范。定义一个接口实际上是一定一个规范,那么一个接口可以定义多个规范。每个规范实际上是一个函数(方法)名称。 接口的实现:通过具体继承这个接口的来具体实现。...通过测试,我们知道hasattr函数其实也同样适用于属性。...这里的参数3中的方法名称不一定是要在的内部的,也可以是外部自定义的。 同样的,这个函数也可以适用到属性获取上面。 3. setattr函数 这个函数用来设置对象的默认方法与属性。...setattr(参数1,参数2,参数3) 参数1:某个的实例化对象。 参数2:需要设置的某个的新的方法或属性名称。 参数3:对象参数2中的方法或属性名称的具体的值。...3.掌握getattr函数获取某个对象的方法或属性,并可以给予一个默认值。 4.掌握setattr函数设置某个对象的方法或属性

48430
  • 【Kotlin】:: 双冒号操作符详解 ( 获取的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )

    文章目录 一、:: 双冒号操作符 1、获取的引用 引用类型 KClass 说明 2、获取对象类型的引用 3、获取函数的引用 4、获取属性的引用 二、 java.lang.Class 与 kotlin.reflect.KClass...一、:: 双冒号操作符 ---- 在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 , 对象 , 函数 , 属性 的 类型对象 引用 ; 获取的这些引用 , 并不常用 , 都是在 Kotlin...属性可以获取的简单名称 ; public val qualifiedName: String?...调用 名::函数获取函数类型 引用 , 其类型是函数类型的 , 如下代码中 , 调用 Student::info 获取函数类型变量 的 类型为 (Student) -> Unit , 该函数引用...属性的引用 , 相当于 Java 反射中的 Field 对象 , 调用 KMutableProperty1#get 函数 传入 Student 实例对象 , 可以获取该实例对象的 name 属性 ;

    4.7K11

    【前端架构】从 JQuery 到 React、Vue、Angular——前端框架的演变及其差异

    为什么一直保持着三足鼎立的局面,而不是某种框架来统一其他人?让我们在本文中讨论这些问题。...那么我们应该怎么做? 树遍历有两种方法:深度优先和广度优先。组件树的渲染是深度优先的,一般通过递归来实现。递归调用不能暂停,可能会导致页面冻结。...React 组件有两种形式:组件和函数式组件。对于组件,像高阶函数这样的高阶组件(HOC)是重用代码的一种自然方式。...而且,的内部生命周期很多,把不同的逻辑放在一起会使组件更加复杂。 如何解决组件的深度嵌套?并且解决方案不能进行重大更新。 所以 React 团队看了一下功能组件。...知识星球【职场和技术】微博【智能时刻】智能时刻哔哩哔哩【超级架构师】抖音【cea_cio】超级架构师快手【cea_cio_cto】超级架构师 小红书【cea_csa_cto】超级架构师 谢谢大家关注

    2.2K20

    3.4 spring5源码系列--循环依赖的设计思想

    循环依赖 第二篇: 3.2spring源码系列----循环依赖源码分析 第三篇: 3.3 Spring5源码---循环依赖过程中spring读取不完整bean的最终 现在总结循环依赖的思想 学了那么多, 为什么说见多才能识广...这也是为什么要学习别人的代码的原因. 思想才是我们可以在工作中借鉴使用的 1. 循环依赖的三级缓存设计 2. 接口函数 ---- 一....能, 但是效率超级低. 对一级缓存加锁, 那么所有的对象创建过程中都要等待. 哪怕人家已经创建成功过. 效率太低, 不能接受 3....巧妙的使用了接口函数. 这个接口函数什么用? 就相当于js中的回调函数. 我在前面定义好, 但是不执行. 直到满足条件了, 才执行. 这个方法, 可以大范围应用到实践工作中....但是, 到后面, 你是否真的能够运用这个能力? 不一定, 只有满足条件, 才会运用这个能力. 二. 定义接口函数, 也叫钩子函数 在循环依赖源码中, 两次使用到接口函数的方式.

    36230

    Android 这 13 道 ContentProvider 面试题,你都会了吗?

    1.3 通过 ContentResolver 获取 ContentProvider 内容的基本步骤 得到 ContentResolver 对象:ContentResolver cr = getContentResolver...把自己的数据通过 uri 的形式共享出去 android 系统下 不同程序 数据默认是不能共享访问 需要去实现一个去继承 ContentProvider。...这个标识在元素的 authorities 属性中说明:一般是定义该 ContentProvider 的包的名称; C:路径( path ),通俗的讲就是你要操作的数据库中表的名字,或者你也可以自己定义...1.8 多个进程同时调用一个 ContentProvider 的 query 获取数据,ContentPrvoider 是如何反应的?...1.11 外提供数据共享,那么如何限制对方的使用? android:exported 属性非常重要。这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。

    88330

    接口测试平台:问题答疑07.23

    因为登陆后台的只能是管理员/超级管理员,而我们注册功能注册的只是普通用户,普通用户不能随便登陆后台是正常的。...超级管理员用命令createsuperuser来创建,普通管理员由超管登陆后台后手动创建/赋予普通用户管理员权限。 2.获取用户名 为什么是request.user.username?...我们后台函数的参数request中包含着前端的所有数据,自然也包含着当前登陆并发出本次请求的用户信息,而其中的user就是这个用户信息的集合,获取用户id是 request.user.id ,这个没自动联想出来是正常的...5.源码在哪?怎么可以下载到 为了不增加额外学习成本,源码目前并没开源到github,只是打包后上传到了csdn资源,大家可以直接下载,0积分。...8.进入数据库中实际查看,发现表名和models.py中的名并不是完全相同的,这是错误么?

    24020

    课时38:与对象:继承

    那么我们来思考一个问题:能不能不要每次都从头到尾去重新定义一个新的鱼类?因为我们知道大多数鱼的属性和方法是相似的,如果有一种机制可以让这些相似的东西得以自动传递,那就方便快捷多了。...被继承的称为基、父或超;继承者称为子类,一个子类可以继承它的父的任何属性和方法。...同样是继承于Fish为什么金鱼(goldfish)可以移动,而鲨鱼(shark)一移动就报错? 其实这里抛出的异常说得很清楚了:Shark对象没有x属性。...********************** 三、使用super函数 **********************  super函数能够帮我们自动找到基的方法,而且还为我们传入了self参数,这样就不需要做这些事了...super函数的“超级”之处在于你不需要明确给出任何基的名字,它会自动帮你找到所有基以及对应的方法。

    37350

    使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化

    由此,我们有个建议:VID 的定长长度尽可能短,同理,属性类型设置亦如是。超级节点图片图数据库实践中,超级节点是一个比较常遇到的性能问题。那么,什么是超级节点(稠密点)?...此外,假如现在你有一个已知的超级节点,且不方便处理,那查询的时候就要尽量避免逆向查询,即从这个超级节点出发,查询其他节点。数据导入图片社区用户经常遇到的还有一问题:数据导入慢的问题。...为什么?因为上层的业务同学不大了解 NebulaGrpah 运行机制的情况下,容易将服务打满,导致内存爆炸,因此开启这个功能之后,至少能保证系统的稳定运行。...使用,同算子 Traverse 配合获取点的属性 GetEdge 获取边的属性...这里需要注意的是,这个方式容易产生超级节点,这里就需要注意避免超级节点的产生。功能更强了 UDF用户自定义函数(User-defined Function,UDF),用户可以在 nGQL 中调用函数

    1.3K41

    转: 细说HTML元素的ID和Name属性的区别

    为什么有了ID还要有Name?! 而同样我们也可以得到最classical的答案:ID就像是一个人的身份证号码,而Name就像是他的名字,ID显然是唯一的,而Name是可以重复的。    ...用途3: 建立页面中的锚点,我们知道link是获得一个页面超级链接,如果不用href属性,而改用Name,如:,我们就获得了一个页面锚点...Name属性还有一个问题,当我们动态创建可包含Name属性的元素时,不能简单的使用赋值element.name = "..."...初始化Name属性的这个设计不是IE的缺陷,因为MSDN里说了要这么做的,可是这样设计的原理什么?我暂时没有想太明白 。    ...在DHTML对象中怎么引用他们?如果我们使用ASPX页面,这样的情况是不容易发生的,因为aspnet进程在处理aspx页面时根本就不允许有ID非唯一,这是页面会被抛出异常而不能被正常的render。

    1.9K30

    【自然框架】 页面里的父—— 改进和想法、解释

    如果简单的用“书上说,继承不能超过三层”、“组合优于继承”来衡量的话,那么.Net框架能得到什么样的结论?       ...用不用继承,继承的层数,这个要根据具体问题具体分析的,不能简单的依据书上的话、很随意的做出结论。也不能被书上的话给框框死,就是“尽信书不如无书”吧。 2、 我为什么要用继承。       ...很显然这些相同的事情不能让每个列表页面都亲自处理一遍,这个工作效率就太低了,冗余代码也很多。那么怎么办?我想到的就是继承。建立一个父,把这些事情都交给父去做,子类“坐享其成”就可以了。...3、 组合       上面说了,要把这些共同的事情交给父去做,那么是不是说就一定要父亲自去做?很显然不是的。...为什么不把判断URL的地方做成单独的,然后再去调用,就像判断是否登录的那样?

    1.2K50

    SpringBoot + SpEL,轻松搞定复杂权限控制,非常优雅!

    但是,等到实际用到的时候就傻眼了,为什么?...在实际的开发中,你会发现,对于权限校验的需求场景是很多的,比如: 只要配置了任何角色,就可以访问 有某个权限就可以访问 放行所有请求 只有超级管理员角色才可以访问 只有登录后才可以访问 在指定时间段内可以访问...他最强大的功能是可以通过运行期间执行的表达式将值装配到我们的属性或构造函数之中。 如果有小伙伴之前没有接触过,不太理解这句话的含义,那么不要紧,继续往下看,通过后续的实践你就能明白他的作用了。...这里,我们仅需要定义一个value属性用于接收表达式即可。...有的同学会问,你权限校验的逻辑

    59910

    【Java】基础52:注解,没有想象中那么简单

    函数式接口:@FunctionalInterface 被FunctionalInterface修饰的接口必须是函数式接口。 其中用/**/修饰的句子也是注释。...当然过时并不代表着不能用了,依旧可以使用。 ④抑制警告注解:@SuppressWarnings 让编译器不要报出警告信息。 这个是什么意思?...它们的属性类型都是枚举。 什么叫枚举? 枚举里面有各种各样的属性,全都是大写字母。 使用枚举名可以直接调用这些属性,就有点类似于使用名直接调用静态变量。 因为时间受限就不详细说明了。...如果有对应框架的话,我们直接在构造方法上放一个注解,就能够给属性赋值了。 不用我们创建对象初始化什么的,是不是超级简单? 当然需要有对应的框架,那底层是怎么做到的?...①获取Student对应的Class对象 每个都有一个对应的Class对象,三种获取Class对象的方式,选择一种即可。

    37320

    SpringBoot + SpEL,轻松搞定复杂权限控制,非常优雅!

    但是,等到实际用到的时候就傻眼了,为什么?...在实际的开发中,你会发现,对于权限校验的需求场景是很多的,比如: 只要配置了任何角色,就可以访问 有某个权限就可以访问 放行所有请求 只有超级管理员角色才可以访问 只有登录后才可以访问 在指定时间段内可以访问...他最强大的功能是可以通过运行期间执行的表达式将值装配到我们的属性或构造函数之中。 如果有小伙伴之前没有接触过,不太理解这句话的含义,那么不要紧,继续往下看,通过后续的实践你就能明白他的作用了。...这里,我们仅需要定义一个value属性用于接收表达式即可。...有的同学会问,你权限校验的逻辑

    56210

    Python教程第6章 | Python面向对象

    2、方法传参 上面我们学习了方法如何调用类属性,那么方法如何传参? 其实很简单,跟普通的函数一样,直接增加参数就好了。...除此之外,在这里,还要强调一个概念,当你把实例化之后,里面的属性和方法,就不叫类属性方法了,改为叫实例属性和实例方法,也可以叫对象属性和对象方法。 为什么要这样强调?...那么在 Python 中有没有属性的访问控制? 一般情况下,我们会使用 __private_attrs 两个下划线开头,声明该属性为私有,不能地外部被使用或直接访问。...在内部的方法中使用时 self.__private_attrs。 为什么只能说一般情况下? 因为实际上, Python 中是没有提供私有属性等功能的。...但是 Python 对属性的访问控制是靠程序员自觉的。为什么这么说? 看看下面的示例: 仔细看图片,为什么说双下划线不是真正的私有属性

    20310

    为什么不用超级计算机“神威·太湖之光”,把比特币全挖掉?

    最近,比特币超级火。 而且不少报道又说挖比特币又费计算机又费电,那么为什么不用超级计算机来挖比特币? 总所周知,国内的超级计算机可是很厉害的。...那么,为什么不用超级计算机“神威·太湖之光”,把比特币全挖掉? 1、超级计算机也不能加快比特币的产生速度 实际上,比特币基于区块链技术。...所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。 类比一下,把区块链当成一本本的账本。每一个账本都记录着区块链网络上的交易。...那就是说,你急也没用,时间不到,不能生成区块。不能生成区块,也就没有奖励。所以,大力不能出奇迹的。超级计算机也不能加快比特币的生成。 其实看一下挖矿机(下图),也是超级计算机。...如果国家动用超级计算机挖比特币,那么以后的政策怎么实施。 3、投入产出比不划算 付出的代价和产出不成正比。白白耗费稀有能源,没人会做这种事的。好比为什么不用超级计算机打王者荣耀一样。 你觉得

    1.6K90

    稍微总结一下。怎样读源码

    怎么实例化?这时候BeanDefinition就派上用场了,利用BeanDefinition里面的信息,再用上反射,很容易就可以new出一个实例; 那如果bean里面依赖其他bean?...那就顺带把其他bean也实例化出来,然后通过构造函数或者set方法,注入到bean里面去。 实例化后的bean,就直接返回给你了吗?...最后,推荐一本讲Spring源码的超级好书,王福强老师的《Spring揭秘》,不过现在买不到了,可以在某东上面买电子书。...基本原理其实就是通过反射解析及其的各种信息,包括构造器、方法及其参数,属性。...如果找到则通过构造器new出来(这就是控制反转,不用你new,框架帮你new),再在这个找是不是有要注入的属性或者方法,比如标有@autowired的属性,如果有则还是到container找对应的解析

    38730

    关于Spring的BeanUtils

    getter和setter方法;2.如果存在属性完全相同得内部类,但是不是同一个内部类,即分别属于各自得内部类,则Spring会认为属性不同,不会Copy;3.泛型只在编译期起作用,不能依靠泛型来做运行期得限制...是不是超级简单,比如工作中将entity转vo,就有这种使用场景,运行main方法,测试结果和那个作者得出的第二点的结论是一样的,b对象里面的inner是null!...但是这个是为什么?这个是BUG吗?这个也是我今天要说的重点。...内部类 我们知道,java给我们提供了内部类这样的东东,但是java的内部类,它其实只是java的一个语法糖而已(不知道什么是语法糖的请自行百度),那么我们定义得两个JAVA里面的Inner的真面目到底是怎样的...哈哈,不知道读者到这里是不是能明白些什么了

    50400
    领券