面向对象的几个重要概念
面向对象的基本概念
类class:将数据和方法抽象化后的一个集合
方法:抽象类的方法/函数,用于处理类的数据
类变量:定义在类中且不在类方法之内的变量
实例变量:定义在方法中的变量,只作用于当前实例的类
数据成员:实例化的对象具有的变量,包括类变量和实例变量
面向对象的关键技术
封装、继承和多态。
封装:将数据和函数聚合在一起的技术
继承:从基类派生新类,新类会具有基类的数据和方法
多态:一个类实例的相同方法在不同情形有不同表现形式
抽象:一种忽略实现细节的方式
python面向对象
类的声明定义
class Factory:
def __init__(self, name: str):
self.name = name
def get_name(self):
return self.name
类的实例化与操作
# 实例化
factory = Factory("factory")
# 访问类的属性
factory.name
# 调用类的方法
name = factory.get_name()
类的继承
class CarFactory(Factory):
def produce(self):
print("produce a car")
car_factory = CarFactory("Tesla")
car_factory.name
car_factory.produce()
抽象
class Animal(meta=abc.ABC):
@abc.abstractmethod
def get_name(self):
pass
class Cat(Animal):
def get_name(self):
return "Cat"
cat = Cat()
cat.get_name()
多态
可以借助关键字传参实现
class Animal:
def __init__(self):
self.mouth_count = mouth_count
self.mouth_count = leg_count
def set_animal(self, mouth_count: int = None, leg_count: int = None):
if leg_count: self.leg_count = leg_count
if mouth_count: self.mouth_count = mouth_count
animal = Animal()
animal.set_animal(1)
animal.set_animal(1, 2)
几个内置的属性
__dict__:类的属性
__doc__:类的文档
__name__:类名
__bases__:类的所有父类构成元素
__module__:类定义所在的模块
类变量的保护类型
_foo:protected类型,允许类对象和子类访问
__foo: private类型,只允许类本身访问
__foo__: 特殊定义的方法,例如__init__等