1、property
用于将类方法转换为属性调用,从而实现对类属性的更加灵活的访问控制和管理。
在 Python 中,通过 property 装饰器可以将类方法定义为属性,使得该方法在被访问时可以像访问普通属性一样,而不需要显式地调用方法。通常情况下,property 装饰器需要与另外两个方法配合使用:
- getter 方法:用于获取属性值的方法。
- setter 方法:用于设置属性值的方法(可选)。
- deleter 方法:用于删除属性值的方法(可选)。
示例:
class People:
def __init__(self,name):
self.__name=name
@property
def name(self):
# print('getter')
return self.__name
@name.setter
def name(self,val):
# print('setter',val)
if not isinstance(val,str):
print('名字必须是字符串类型')
return
self.__name=val
@name.deleter
def name(self):
print('deleter')
print('不允许删除')
del self.__name # 如果不加这个方法,就不能删除
p=People('xxx')
del p.name
2、绑定方法与非绑定方法
@classmethod 装饰器是将方法定义为类方法,__init__ 里面关于初始化的变量访问不到,也不存在实例对象。
@staticmethod 装饰器是将方法定义为静态方法,静态方法是不依赖类实例的,即可以通过类型进行访问 。
3、ABC 模块
abc 模块是 Python 标准库中的一个模块,它提供了抽象基类(Abstract Base Class,ABC)的支持。抽象基类是一种特殊的类,它不能被实例化,只能被继承,用于定义子类必须实现的方法接口。
1、特点:
使用 abc 模块可以定义抽象基类,这些基类可以包含抽象方法(即只有方法签名而没有具体实现的方法),强制要求继承者实现这些方法。
2、@abstractmethod 装饰器
abc 模块中的 abstractmethod 装饰器用于标记抽象方法,子类必须实现这些被标记的方法。
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
print("Woof")
class Cat(Animal):
def make_sound(self):
print("Meow")