情况一:子类需要自动调用父类的方法:子类不重写__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、运算符重载相关推荐

  1. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

  2. Python高级培训第一次作业(寒假)

    面向对象编程 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变量:类变量在整个实例化的对象中是公 ...

  3. Python高级专题 - 类型转换的魔术方法

    Python 类型转换的魔术方法 jcLee95 的 CSDN 博客 本文讨论python中将某个复杂对象转换为简单对象或数据类型的常用魔术放啊,这些在编程中是十分有用的. 邮箱 :291148484 ...

  4. python分层抽样_Python:数据抽样平衡方法重写

    之前在R里面可以通过调用Rose这个package调用数据平衡函数,这边用python改写了一下,也算是自我学习了. R: #设定工作目录 setwd(path) # 安装包 install.pack ...

  5. python寒假培训第二课

    super()函数 Python3中可以使用super()替代super().init() 作用:在子类中调用父类的方法进行使用 a.单继承(只继承一个父类,父类没有继承其他类) class A(ob ...

  6. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  7. python 运算符重载_Python3面向对象-运算符重载

    1:运算符重载介绍 运算符重载,就是在某个类的方法中,拦截其内置的操作(比如:+,-,*,/,比较,属性访问,等等),使其实例的行为接近内置类型. 当类的实例出现在内置操作中时(比如:两个实例相加 + ...

  8. python类方法继承_对python中类的继承与方法重写介绍

    1.单继承 父类也叫基类 子类也叫派生类 如下所示,继承的关系: 继承的书写格式: class 子类(父类): 方法 实例: class Animal: def eat(self): print(&q ...

  9. [转载] Python高级变量(列表、元组、字典、字符串、公共方法)

    参考链接: Python | 重点数据类型 (字符串,列表,元组,迭代)(String, List, Tuple, Iteration) 文章目录 高级变量类型目标知识点回顾 01. 列表1.1 列表 ...

最新文章

  1. 科研 | Nature:新型土壤细菌具有多种合成次级代谢物的基因
  2. 调查报告:工人们并不担心将来会被AI取代
  3. 第32章:MongoDB-索引--Capped固定集合
  4. 深度学习-清晰易懂的马尔科夫链原理介绍
  5. python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...
  6. angularjs学习曲线
  7. NETCore Bootstrap Admin 通用后台管理权限 [1]: 前后台分离系统简介
  8. 两个原子操作组合到一块不一定是能保证原子性
  9. ICLR2021 Oral |9行代码提高少样本学习泛化能力
  10. 用Python解决百马百瓦
  11. AxWebBrowser
  12. 课程 2B: 制作一款交互性应用
  13. android-- apktool反编译工具使用详解
  14. actor模型 java框架,actor模型(actor模式优缺点)
  15. 第16周收录103起融资,芯片创企为热点丨潜在周波啊
  16. 计算机硬盘更换图解,GHOST磁盘克隆详细图文教程,看后你也可以自己快速更换电脑硬盘...
  17. Elasticsearch 映射参数 fields
  18. backtrace, backtrace_symbols, backtrace_symbols_fd
  19. 近视眼学计算机好吗,听说,近视的人智商更高?
  20. Python实现数字转人民币(大写汉字)源代码

热门文章

  1. 手机无显示如何和电脑连接服务器,手机远程连接无网电脑连接服务器
  2. JS 中原型和原型链深入理解
  3. 【firewalld】CentOS7下firewall的ipset配置使用详解
  4. Vue项目开发中一些常见问题
  5. 信息学奥赛一本通:1058:求一元二次方程
  6. 做个电商网站需要用到的技术
  7. 微信小程序开发扫条码wx.scanCode报scanCode:fail
  8. 猿创征文 | Java知识【顺序结构判断语句】
  9. 【数据库基础】 几种基本的关系代数运算方法
  10. 关系代数运算——(软考三)