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