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

【Python】学习Python面向对象编程的疑问

(Java菜鸟来学Python了)

🤔

1. 静态方法与类方法什么区别?

实例方法只能被实例对象调用(Python3 中,如果类调用实例方法,需要显示的传self, 也就是实例对象自己),静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
静态方法,参数没有要求。
类方法,第一个参数必须要默认传类,一般习惯用cls。

2. 构造方法与初始化方法什么区别?

3. 类中的实例方法必须传形参self

否则调用报错

TypeError: Student.sleep() takes 0 positional arguments but 1 was given
在这里插入图片描述

4. 为什么python的类属性和类方法,也可以通过对象调用

Python 中的类属性和类方法可以被类和对象共享访问。当使用对象去访问类属性或类方法时,Python 会首先在对象的名称空间中查找,如果没有找到对应的属性或方法,则会转而在其类的名称空间中查找。因此,即使通过对象去调用类属性或类方法,实际上是调用了该类的属性或方法。这一点与类的实例化无关,只与类本身有关。可以通过在类内部使用 @classmethod@staticmethod 修饰器来声明类方法和静态方法。需要注意的是,类方法的第一个参数必须是类本身,约定写作 cls,而静态方法则没有类参数,使用时与普通函数相同。

5. python可以动态绑定属性,那绑定的属性和类属性一样,会怎么样

在 Python 中,你可以动态地为对象绑定新的属性。这意味着你可以在运行时为对象添加新的属性,而不需要在类定义中显式地声明这些属性。动态绑定属性可以为对象提供灵活性,但需要注意一些潜在的问题。

如果你动态绑定的属性与类属性同名,它们实际上是不同的属性。当你通过对象访问该属性时,Python 首先在对象实例中查找,然后才在类中查找。如果对象实例中存在同名的属性,它会优先使用对象实例中的属性。

相关文章:

  • 大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17
  • uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值
  • vue3基于vite打包
  • BetterDisplay Pro v2.0.11(显示器颜色校准软件)
  • arm开发板
  • Git-概念与架构
  • Mistral 7B 比Llama 2更好的开源大模型 (四)
  • LeetCode算法题解(动态规划)|LeetCoed62. 不同路径、LeetCode63. 不同路径 II
  • 软考高项知识点 安全技术
  • 【Django-02】 Model模型和模型描述对象Meta
  • ubuntu 20.04安装 Anaconda教程
  • 01 DDD小传:领域驱动设计为什么这么火?
  • python接口自动化测试之接口数据依赖
  • 【python学习】基础篇-常用函数-sorted() 对可迭代对象进行排序
  • clusterProfiler包学习
  • 收藏网友的 源程序下载网
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【391天】每日项目总结系列128(2018.03.03)
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Bootstrap JS插件Alert源码分析
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java比较器对数组,集合排序
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MYSQL 的 IF 函数
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redis在Web项目中的应用与实践
  • v-if和v-for连用出现的问题
  • Web标准制定过程
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 机器学习 vs. 深度学习
  • ------- 计算机网络基础
  • 讲清楚之javascript作用域
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 删除表内多余的重复数据
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • gunicorn工作原理
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Python第六天)文件处理
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (七)c52学习之旅-中断
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)Java算法:二分查找
  • (一)SpringBoot3---尚硅谷总结
  • (转) Android中ViewStub组件使用
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .mysql secret在哪_MySQL如何使用索引