类和对象
1|0一. 类和对象的概念
1|1概念:
面向对象的两个最重要的概念:类和对象
类:共性事物的抽象,是对某一类具有共性事物的描述,是概念上的定义
对象:对象是共性事物的一个体现,是这类事物的每个个体,或者说是类的一个实例(instance)
1|2总结:
类是对象的模板,对象是类的实例
1|3类结构:
里面包含属性与函数
数据是对象的状态-->成员变量(属性)
方法是对象的行为-->函数(方法)
2|0二. 语法
注意:1) 类名一般首字母大写,比如 class User #class是关键字
2) 类里面包含属性和方法
3) 类函数自带self关键字(指向类的实例)。不能少!
4) 如果类函数里面要调用属性,方法: self.属性名, self.方法名
2|1实例:
运行结果:
3|0三. 初始化函数的调用
初始化函数:def __init__(self, 参数1, 参数2, 参数3)
__init__函数,是两个下划线!经常会写错,写成单下划线,这样会报错!
3|1用法:
3|2注意:
1) 初始化里面做的是初始化操作,可以带参数也可以不带参数
2) 跟普通函数一样,可以带默认参数
3) 初始化里面可以有赋值好了的属性值
4) 每次创造一个实例,需要传递跟初始化函数参数个数一致的值
5) 每个实例都会自动调用初始化函数
6) 初始化参数的写法要注意,怎么把参数赋值给self.参数名,参数名字不一定要一致,但是赋值要正确
3|3实例1:
3|4实例2:类也可以没有初始化
当直接调用函数后,再打印属性发现有age了,因为函数setAge里生成了一个全局属性age
4|0四. 类的继承
1. 子类拥有父类的所有属性和行为
2. 子类可以扩展自己的属性和行为
3. 父类的行为不够用,子类要升级和优化,子类可重写父类的方法——多态
4. 子类和父类都有的行为:子类实例优先使用自己的,没有再去用父类的
4|1支持多继承
多继承语法:用逗号隔开父类
class 子类类名(父类1, 父类2):
4|2实例
运行结果
4|3继承—super用法
在子类的行为中,想调用父类的行为,然后再做额外扩展,可以使用super类
语法:super().行为(参数)
5|0五. 封装数据
5|1实现方式:遵循一定的属性和方法命名规约
不希望这些变量或者方法被外部使用
5|2• 任何以单下划线_开头的名字都应该是内部实现
即不希望通过实例名字,变量名/方法名来调用,但是python并不会真的阻止别人访问内部名称,子类也可以继承并重写父类的方法,只是一种约定
5|3• 以双下划线__开头的名字,仅类自己可访问
继承——这种方法通过继承是无法被覆盖(重写)的。其实也是可以访问的,只不过换成了_类名__变量名/函数名
运行结果
5|4哪种方式好
两种不同的编码约定(单下划线和双下划线)来命名私有属性,问题就来了:到底哪种方式好呢?
大多数而言,你应该让你的非公共名称以单下划线开头,但是,如果你清楚你的代码会涉及到子类,并且有些内部属性应该在子类中隐藏起来,那么才考虑使用双下划线方案
6|0六. @property和@属性名.setter
实例属性,除了访问和修改之后,增加其他逻辑处理,如合法性等
6|1实例
运行结果:
6|2注意:
不能写成return self.age和self.age = age,原因如下
__EOF__

本文链接:https://www.cnblogs.com/my_captain/p/9243168.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?