当前位置:网站首页>特殊成员与魔法方法
特殊成员与魔法方法
2022-04-23 06:19:00 【qq1033930618】
一、主函数
from module_a import Cat
# __init__() 构造函数
cat = Cat("Tom", 15)
# # __del__() 析构函数 显式调用或程序结束时自动调用
# del cat
# # print(cat) 不可打印
# __doc__ __modules__ __class__
print(cat.__doc__) # 打印类说明文档
print(cat.__module__) # 打印类所在模块名称
print(cat.__class__) # 打印类所在位置
# __call__()
cat(1, 2) # 使类像函数一样被调用
print(callable(cat))
# __dict__
print(cat.__dict__) # 以字典形式打印共有与私有成员属性
print(cat._Cat__private_name) # 访问私有成员属性
# __str__()
print(cat) # 打印对象返回一段特性的话 而不是访问地址
print(str(cat))
# __len__()
print(len(cat)) # 必须定义如何度量类长度
# __iter__()
# 必须要返回迭代器
for i in cat:
print(i)
# __getitem__() __setitem__() __delitem__()
print(cat["name"]) # 使类具有下标访问能力
cat["name"] = "Tim"
print(cat["name"]) # 使类具有下标访问能力
print(cat.name)
del cat["name"]
# print(cat.name) 删除了类成员变量 不能打印
# 数学运算 如果未定义函数则报错 如果未定义该加法类型则返回none
# __add__() +
# __sub__() -
# __mul__() *
# __div__() /
# __mod__() %
# __pow__() **
cat_another = Cat("Tom_another", 20)
print(cat + cat_another)
cat2 = cat + cat_another
cat3 = cat_another + cat2
# cat3 = cat2 + cat_another 必须满足顺序传参
print(cat3)
二、类
class Cat:
""" 这是猫类 """
def __init__(self, name, tail_length=10):
self.name = name
self.__private_name = name
self.tail_length = tail_length
print("我是一只猫,我叫%s" % self.name)
def __del__(self):
print("我被系统回收了")
def __call__(self, *args, **kwargs):
print("Cat", args[0]+args[1])
def __str__(self):
return "我是%s" % self.name
def __len__(self):
return self.tail_length
def __iter__(self):
return iter([1, 2, 3, 4])
def __getitem__(self, item):
if item =="name":
return self.name
else:
return None
def __setitem__(self, key, value):
if key == "name":
self.name = value
def __delitem__(self, key):
if key == "name":
del self.name
def __add__(self, other):
if isinstance(other, Cat):
return [self, other]
elif isinstance(other, list):
other.append(self)
return other
版权声明
本文为[qq1033930618]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_51326691/article/details/120463976
边栏推荐
- GIS实战应用案例100篇(五十二)-ArcGIS中用栅格裁剪栅格,如何保持行列数量一致并且对齐?
- 可视化常见问题解决方案(八)数学公式
- presto日期函数的使用
- PyTorch 12. Hook usage
- Intelligent communication solution of Hainan Phoenix Airport
- Typora操作技巧说明(一).md
- 江宁医院DMR系统解决方案
- [8] Assertion failed: dims. nbDims == 4 || dims. nbDims == 5
- “泉”力以赴·同“州”共济|北峰人一直在行动
- el-date-picker中自定义快捷选项picker-options,动态设置禁用日期
猜你喜欢
Gather, unsqueeze and other operators when PTH is converted to onnx
重大安保事件应急通信系统解决方案
自定义classloader并实现热部署-使用loadClass
GIS实战应用案例100篇(五十二)-ArcGIS中用栅格裁剪栅格,如何保持行列数量一致并且对齐?
Urban emergency management - urban emergency communication command and dispatching system
带低压报警的51单片机太阳能充电宝设计与制作(完整代码资料)
Draw margin curve in arcface
【51单片机交通灯仿真】
关于短视频平台框架搭建与技术选型探讨
机器视觉系列(01)---综述
随机推荐
golang实现一个带Web界面的五险一金计算器
商业版阿里MQ普通消息发送订阅Demo
AUTOSAR从入门到精通100讲(五十二)-诊断和通信管理功能单元
PyTorch 13. Nested functions and closures (dog head)
Warning "force fallback to CPU execution for node: gather_191" in onnxruntime GPU 1.7
自组网灵活补盲|北峰油气田勘测解决方案
机器视觉系列(02)---TensorFlow2.3 + win10 + GPU安装
防汛救灾应急通信系统
Detailed explanation of device tree
CMSIS CM3源码注解
初探智能指针之std::shared_ptr、std::unique_ptr
Tensorflow安装后ImportError: DLL load failed: 找不到指定的模块,且国内安装缓慢
SDC intelligent communication patrol management system of Nanfang investment building
以智能生产引领行业风潮!美摄智能视频生产平台亮相2021世界超高清视频产业发展大会
带低压报警的51单片机太阳能充电宝设计与制作(完整代码资料)
各类日期转化的utils
AUTOSAR从入门到精通100讲(五十一)-AUTOSAR网络管理
el-date-picker中自定义快捷选项picker-options,动态设置禁用日期
PC端一次启动多个微信
关于短视频平台框架搭建与技术选型探讨