Python高级培训——Num2之类的方法重写、property、运算符重载
情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。
情况二:子类不需要自动调用父类的方法:子类重写__init__()方法,实例化子类后,将不会自动调用父类的__init__()的方法。
情况三:子类重写__init__()方法又需要调用父类的方法:使用super关键词:
super(子类,self).__init__(参数1,参数2,....) class Son(Father):def __init__(self, name): super(Son, self).__init__(name)
Property()函数
在新式类中返回属性值
class property([fget[, fset[, fdel[, doc]]]])
- fget -- 获取属性值的函数
- fset -- 设置属性值的函数
- fdel -- 删除属性值函数
- doc -- 属性描述信息
所用的变量名必须使用带有下划线的变量
可以让你对受限制访问的属性使用点语法
常见运算符重载方法
(31条消息) python 运算符重载_Claroja-CSDN博客
(31条消息) 浅析Python运算符重载_viclee-CSDN博客_python运算符重载的作用
方法名
重载说明
运算符调用方式
__init__
构造函数
对象创建: X = Class(args)
__del__
析构函数
X对象收回
__add__/__sub__
加减运算
X+Y, X+=Y/X-Y, X-=Y
__or__
运算符|
X|Y, X|=Y
_repr__/__str__
打印/转换
print(X)、repr(X)/str(X)
__call__
函数调用
X(*args, **kwargs)
__getattr__
属性引用
X.undefined
__setattr__
属性赋值
X.any=value
__delattr__
属性删除
del X.any
__getattribute__
属性获取
X.any
__getitem__
索引运算
X[key],X[i:j]
__setitem__
索引赋值
X[key],X[i:j]=sequence
__delitem__
索引和分片删除
del X[key],del X[i:j]
__len__
长度
len(X)
__bool__
布尔测试
bool(X)
__lt__, __gt__,
__le__, __ge__,
__eq__, __ne__
特定的比较
依次为X<Y,X>Y,X<=Y,X>=Y,
X==Y,X!=Y
注释:(lt: less than, gt: greater than,
le: less equal, ge: greater equal,
eq: equal, ne: not equal
)
__radd__
右侧加法
other+X
__iadd__
实地(增强的)加法
X+=Y(or else __add__)
__iter__, __next__
迭代
I=iter(X), next()
__contains__
成员关系测试
item in X(X为任何可迭代对象)
__index__
整数值
hex(X), bin(X), oct(X)
__enter__, __exit__
环境管理器
with obj as var:
__get__, __set__,
__delete__
描述符属性
X.attr, X.attr=value, del X.attr
__new__
创建
在__init__之前创建对象
实例:
import typesclass Animal(object):#设置动物类a = 'cat' #赋值def __init__(self, name):#初始化self.name = name@classmethod#设置为一个类方法
def run(cls):#在类外定义新类runprint('%s在奔跑' % cls.a)Animal.runn = run#将run方法添加给类
Animal.runn()#输出
class vector:#定义类def __init__(self,a):#初始化self.a=adef __pow__(self, power, modulo=2):#平方运算符重载return power*powerdef __cmp__(self, other):#比较运算符重载if self.a>other.a:return self.aelse:return other.a
a=vector(95)#定义对象a
b=vector(100)#定义对象b
print(a.__pow__(95,2))#输出平方
print(b.__pow__(100,2))#输出平方
print(a.__cmp__(b))#输出最大值
Python高级培训——Num2之类的方法重写、property、运算符重载相关推荐
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
- Python高级培训第一次作业(寒假)
面向对象编程 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变量:类变量在整个实例化的对象中是公 ...
- Python高级专题 - 类型转换的魔术方法
Python 类型转换的魔术方法 jcLee95 的 CSDN 博客 本文讨论python中将某个复杂对象转换为简单对象或数据类型的常用魔术放啊,这些在编程中是十分有用的. 邮箱 :291148484 ...
- python分层抽样_Python:数据抽样平衡方法重写
之前在R里面可以通过调用Rose这个package调用数据平衡函数,这边用python改写了一下,也算是自我学习了. R: #设定工作目录 setwd(path) # 安装包 install.pack ...
- python寒假培训第二课
super()函数 Python3中可以使用super()替代super().init() 作用:在子类中调用父类的方法进行使用 a.单继承(只继承一个父类,父类没有继承其他类) class A(ob ...
- python代码案例详解-Python运算符重载详解及实例代码
Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...
- python 运算符重载_Python3面向对象-运算符重载
1:运算符重载介绍 运算符重载,就是在某个类的方法中,拦截其内置的操作(比如:+,-,*,/,比较,属性访问,等等),使其实例的行为接近内置类型. 当类的实例出现在内置操作中时(比如:两个实例相加 + ...
- python类方法继承_对python中类的继承与方法重写介绍
1.单继承 父类也叫基类 子类也叫派生类 如下所示,继承的关系: 继承的书写格式: class 子类(父类): 方法 实例: class Animal: def eat(self): print(&q ...
- [转载] Python高级变量(列表、元组、字典、字符串、公共方法)
参考链接: Python | 重点数据类型 (字符串,列表,元组,迭代)(String, List, Tuple, Iteration) 文章目录 高级变量类型目标知识点回顾 01. 列表1.1 列表 ...
最新文章
- 科研 | Nature:新型土壤细菌具有多种合成次级代谢物的基因
- 调查报告:工人们并不担心将来会被AI取代
- 第32章:MongoDB-索引--Capped固定集合
- 深度学习-清晰易懂的马尔科夫链原理介绍
- python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...
- angularjs学习曲线
- NETCore Bootstrap Admin 通用后台管理权限 [1]: 前后台分离系统简介
- 两个原子操作组合到一块不一定是能保证原子性
- ICLR2021 Oral |9行代码提高少样本学习泛化能力
- 用Python解决百马百瓦
- AxWebBrowser
- 课程 2B: 制作一款交互性应用
- android-- apktool反编译工具使用详解
- actor模型 java框架,actor模型(actor模式优缺点)
- 第16周收录103起融资,芯片创企为热点丨潜在周波啊
- 计算机硬盘更换图解,GHOST磁盘克隆详细图文教程,看后你也可以自己快速更换电脑硬盘...
- Elasticsearch 映射参数 fields
- backtrace, backtrace_symbols, backtrace_symbols_fd
- 近视眼学计算机好吗,听说,近视的人智商更高?
- Python实现数字转人民币(大写汉字)源代码