### Python面向对象编程详解 #### 一、定义一个类 在Python中,面向对象编程是一种重要的编程范式,它允许开发者定义自己的数据类型——类,并创建该类的对象。类是对象的蓝图,定义了对象应该具有的属性和行为。 **术语解析**: - **类**:用于描述具有相同特性和行为的对象集合。 - **类对象**:当定义一个类后,该类即成为一个类对象,可以被引用或实例化。 - **实例对象**:通过类对象实例化产生的具体对象。 - **属性**:类或对象的数据成员。 - **函数**:独立定义的行为,通常不与特定对象关联。 - **方法**:与特定对象关联的函数,通常在类内部定义。 **定义类的基本语法**: ```python class ClassName: # 属性定义 attr = value # 方法定义 def method_name(self, arg1, arg2): # 方法体 ``` 例如定义一个`People`类: ```python class People: name = 'Jack' def print_name(self): print(self.name) ``` 在这个例子中,`People`是一个类,其中包含了一个属性`name`和一个方法`print_name`。通过`People()`可以实例化一个新的`People`对象,如`p = People()`,然后可以通过`p.name`或`p.print_name()`来访问属性和方法。 #### 二、属性 **公有属性**:在类外部可以直接访问的属性,如上例中的`name`。 **私有属性**:在类外部不可直接访问的属性,通过在属性名前加上两个下划线`__`来实现,例如`__name`。尝试在类外部直接访问会抛出异常: ```python class People: __name = 'Jack' p = People() print(p.__name) # 抛出异常 ``` 实际操作中,可以通过定义公共方法来间接访问私有属性: ```python class People: __name = 'Jack' def get_name(self): return self.__name p = People() print(p.get_name()) # 输出: Jack ``` #### 三、方法 **方法定义**:在类中定义的方法通常包含一个名为`self`的参数,它代表当前对象自身。例如: ```python class People: def say_hello(self): print("Hello!") p = People() p.say_hello() # 输出: Hello! ``` #### 四、类中内置的方法 **构造方法**:`__init__`是在对象创建时自动调用的,用于初始化对象的属性。 ```python class People: def __init__(self, name): self.name = name p = People('Alice') print(p.name) # 输出: Alice ``` **析构方法**:`__del__`是在对象被销毁时调用的,用于清理资源。 ```python class People: def __del__(self): print("Object deleted") p = People() del p # 输出: Object deleted ``` #### 五、类属性、实例属性、类方法、实例方法以及静态方法 **类属性**:被所有实例共享的属性,只在内存中存储一份。 **实例属性**:每个实例独有的属性,每个实例可能有不同的值。 **类方法**:通过`@classmethod`装饰器定义,第一个参数通常命名为`cls`,代表类本身。 ```python class People: count = 0 @classmethod def get_count(cls): return cls.count People.count = 10 print(People.get_count()) # 输出: 10 ``` **实例方法**:常规定义的方法,第一个参数为`self`,代表当前实例。 **静态方法**:通过`@staticmethod`装饰器定义,不依赖于类或实例状态的方法。 ```python class People: @staticmethod def say_hello(): print("Hello!") People.say_hello() # 输出: Hello! ``` 通过以上介绍,我们可以看出Python面向对象编程的灵活性和强大之处,它提供了一种结构化的方式去组织代码,使得代码更易于维护和扩展。
剩余9页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新版FPGA课程大纲,芯片硬件开发用的大纲
- ROS2下OpenCV识别物体区域和视频捕捉的样例
- STM32-EMBPI.PDF
- Font Awesome图标字体库提供可缩放矢量图标,它可以被定制大小、颜色、阴影以及任何可以用CSS的样式
- Bluefield 2固件镜像版本,fw-MBF2M345A-VENOT-ES-Ax-24.40.1000.bin
- 雪颜奇迹幻白双重莹白焕采霜50ML-1016-FA.rar
- Qt的QDOCK高级用法源码,包含linux和windows版本,从开源库下载
- OC-FileManage
- coredns-v1.10.1.tar、flannel-v0.26.1.tar、flannel-cni-plugin-v1.5.1-flannel2.tar
- 美宝莲双头眉笔Bundle pack 卸妆液 1211FA-1.rar