前言:
面向对象编程,是许多编程语言都支持的一种编程思想。简单理解是:基于模板(类)去创建实体(对象),
使用对象完成功能开发。面向对象包含三大主要特性:
封装
继承
多态
1. 封装
@property是Python中一个非常有用的装饰器,它允许我们将一个方
法转换为类的属性。通过使用@property,我们可以像访问普通
属性一样访问方法的结果,从而提高代码的简洁性和可维护性。
1. 基本概念
@property装饰器用于将一个方法定义为属性。这意味着当我们访问该属性时,
实际上是在调用该方法,并返回其结果。@property的主要目的是为了提供一种
更直观的方式来访问和修改对象的状态。
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 10_装饰器.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/9 9:06@property装饰器用于将一个方法定义为属性。这意味着当我们访问该属性时,实际上是在调用该方法,并返回其结果。@property的主要目的是为了提供一种更直观的方式来访问和修改对象的状态。
"""
class MyClass:name=Noneage=Nonedef __init__(self):self._value = 0@propertydef value(self):return self._value@value.setterdef value(self, new_value):### 能写好多代码self._value = new_value@value.deleterdef value(self):del self._value
#创建对象
myclass = MyClass()
#print(myclass.value)
# myclass.name 访问的是属性myclass.value = 100 #它方法的是方法
# 当前的value是方法
print(myclass.value)"""@property 装饰器将value方法定义为一个只读的属性@value.setter 装饰器允许我们 为value属性设置值@value.deleter 装饰器允许我们 删除value属性@property 使用场景:数据验证:在设置属性值得时候进行验证动态计算: 计算属性值不是存储它 [流式计算]封装复杂的逻辑 :隐藏复杂的计算或者逻辑 ,使其看起来像一个简单的属性访问 # 作业 : 使用 该装饰器 控制年龄的范围 年龄超过100 岁 默认年龄设置为 22岁!"""
总结:
1. 封装的概念是指?
将现实世界事物在类中描述为属性和方法,即为封装。
2. 什么是私有成员?为什么需要私有成员?
现实事物有部分属性和行为是不公开对使用者开放的。同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义私有成员了
3. 如何定义私有成员?
成员变量和成员方法的命名均以_ _作为开头即可
4. 私有成员的访问限制?
类对象无法访问私有成员
类中的其它成员可以访问私有成员
2. 继承
父类: 基类
子类 :派生类
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 11_python中继承.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/9 9:27
水果案例水果 定义为父类苹果 橘子定义为子类人类案例Person 定义为父类说话的行为 称为方法学生、老师 定义为子类老师说学生说"""class Fruit:#水果类 基类[父类]"""水果类 这是父类"""color="绿色" #定义类的属性#父类中收获的方法def harvest(self,color):print("水果是"+color+"的!")print("水果已经收获了....")print("水果原来是:"+Fruit.color+"的!")#定义派生类
class Apple(Fruit):# Apple 是子类 也叫派生类 Fruit 是Apple的父类 也叫基类"""苹果类 这是子类 它的父类 是 水果"""color = "红色"def __init__(self):print("我是苹果")#苹果类中没有重写 父类的收获的方法#定义派生类
class Orange(Fruit):# Orange 是子类 也叫派生类 Fruit 是Apple的父类 也叫基类"""橘子类 这是子类 它的父类 是 水果"""color = "橙色"def __init__(self):print("我是橘子")# 重写父类收获的方法def harvest(self,color):print("橘子是"+color+"的!")print("橘子已经收获了....")print("橘子原来是:"+self.color+"的!")#创建子类橘子的对象
orange = Orange()
#调用橘子中收获的方法
orange.harvest(orange.color)print("-------------------------------------------")
apple = Apple() # 创建类的实例(苹果)
#苹果类中没有定义 收获的方法
apple.harvest(apple.color) # 调用基类的harvest()方法"""
继承的语法是:
class ClassName(baseclasslist):'''类的帮助信息''' statement 参数说明:ClassName: 用于指定类名 baseclasslist : 用于指定要继承的父类【基类】,可以有多个,类名之间用逗号分隔我们之前没有写 默认继承自 Object Object是所有的类的根类 [金字塔的顶端]statement: 类体 主要有 类变量 方法 属性 等定义语句组成 """