python美团外卖爬虫Python 类的 6 种替代方案,Python开发实习面试题

本文介绍了Python中替代类的6种方案,包括Tuples、Dicts、NamedTuple、attrs、dataclass和Pydantic。讨论了它们的特点,如不可变性、验证和类型注解,特别提到了Pydantic在数据验证和设置管理上的优势。
摘要由CSDN通过智能技术生成

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

‘’’

from typing import Optional

import attr

@attr.s

class Position:

longitude: float = attr.ib()

latitude: float = attr.ib()

address: Optional[str] = attr.ib(default=None)

@longitude.validator

def check_long(self, attribute, v):

if not (-180 <= v <= 180):

raise ValueError(f"Longitude was {v}, but must be in [-180, +180]")

@latitude.validator

def check_lat(self, attribute, v):

if not (-90 <= v <= 90):

raise ValueError(f"Latitude was {v}, but must be in [-90, +90]")

pos1 = Position(49.0127913, 8.4231381, “Parkstraße 17”)

pos2 = Position(42.1238762, 9.1649964)

def get_distance(p1: Position, p2: Position) -> float:

pass

通过把装饰器改成 @attr.s(frozen=True)来使这个类变得不可修改。

你也可以在构造器入参的时候自动执行代码。这被称为是 “转换”。

@attr.s

… class C(object):

… x = attr.ib(converter=int)

o = C(“1”)

o.x

Visual Studio Code 中对类型注解有很多的插件可以使用。

5. Dataclass

Dataclasses 在 PEP 557 中被加入 Python 3.7。它与 attrs 类似,但是被收录于标准库中。一个很重要的点是 dataclass 就是普通的类, 不过是其中保存大量的数据而已。

与 attrs 不同的是,dataclass 使用类型注解而非 attr.ib() 这样的注解。我认为这样大大提高了可读性。另外,由于现在对属性有了注解,编辑器的支持效果也更好了。

你可以很容易的利用装饰器 @dataclass(frozen=True) 使 dataclass 变成不可修改的——这与 attrs 类似。

from typing import Optional

from dataclasses import dataclass

@dataclass

class Position:

longitude: float

latitude: float

address: Optional[str] = None

pos1 = Position(49.0127913

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值