欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > python面向对象三大特征之---封装,私有属性和私有方法,property功能; 继承,重写,object类;多态;类的深拷贝和浅拷贝

python面向对象三大特征之---封装,私有属性和私有方法,property功能; 继承,重写,object类;多态;类的深拷贝和浅拷贝

2025/9/19 0:52:35 来源:https://blog.csdn.net/mimo_mimo/article/details/141199409  浏览:    关键词:python面向对象三大特征之---封装,私有属性和私有方法,property功能; 继承,重写,object类;多态;类的深拷贝和浅拷贝

1.面向对象三大特征

在这里插入图片描述

封装

在这里插入图片描述
1.类属性的创建:
在这里插入图片描述
2.属性的访问:
在这里插入图片描述
私有属性和方法在类外访问的方法也有:不推荐

对象名._类名__私有方法()
对象名._类名__私有属性

3.property功能

在Python中,property 是一个内置的功能,它允许类的方法被当作属性来访问。这意着,你可以像访问数据属性一样访问这些方法的返回值,同时还可以在访问时执行一些逻辑(比如计算值、验证输入等),而不需要显式地调用方法。
@property下的函数调用只能访问属性,不可以更改值,.setter更改属性,注意.前边的是property函数名

property 装饰器或函数可以用来创建这样的属性。它接受一到四个参数:fget(获取值的函数)、fset(设置值的函数)、fdel(删除值的函数)和doc(文档字符串)。通常,至少需要 fget 参数。

class Circle:  def __init__(self, radius):  self._radius = radius  @property  def radius(self):  """获取圆的半径"""  return self._radius#用setter来更改属性的值@radius.setter  def radius(self, value):  """设置圆的半径,确保值为正数"""  if value < 0:  raise ValueError("半径不能为负数")  self._radius = value  
# 使用  
c = Circle(5)  
print(c.radius) 
c.radius = 10    # 赋值,调用setter 

继承

python’中一个子类可以有多个父类
在这里插入图片描述
1.初始化变量

  • 对于只有一个父类的子类,通过super(). __ init__()调用已经被父类初始化的变量
    def __init__(self,name,age,stuno):super().__init__(name,age)self.stuno=stuno
  • 对于有几个父类的子类,通过 父类名字(). __ init__(self,)调用已经被父类初始化的变量
    def __init__(self,name,age,stuno,st):Father1().__init__(self,name,age)Father2().__init__(self,stuno)self.st=st

2.重写
若想在自己的方法中调用父类方法:super().父类方法()在重写方法时调用父类的方法

在这里插入图片描述

3.object类

在这里插入图片描述

多态

实现程序的可扩展性,方便遇到同名方法时候找到对应的类的方法
在这里插入图片描述

类的深拷贝和浅拷贝

在这里插入图片描述
在这里插入图片描述

①变量的赋值:
对象 com1=com这样

②浅拷贝和深拷贝
A shallow copy constructs a new compound object and then (to the extent possible) inserts the same objects into it that the original contains.
A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original

import copy
com1=copy.copy(com)
import copy
x = copy. copy(y) # make a shallow copy of y 
x = copy. deepcopy(y) # make a deep copy of y

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词