只记录区别,一致的地方不记录

【类对象】

1、属性和方法的引用:

python不管是类引用还是实例引用,都是标准语法: obj.name 或 obj.method();

php 类的静态属性(或常量)引用:class::name ,类的静态方法引用:class::method();

实例属性引用 $obj->name,实例的方法引用:$obj->method();

2、构造方法

python 的构造方法名是 __init__(self)

def __init__(self):

self.data = []

注意:类方法里面的第一个参数只能是实例对象,但不限定变量名。所以 self 是指类的实例,self 只是个变量,可以使用 this 等自定义的变量。

php 的构造方法是 __construct() ,且可以不传入任何参数

3、析构方法

python 的析构方法是 __del__(self)

php 的析构方法是 __destruct()

4、类的静态变量引用

python 无静态变量,如果要外部引用直接 class.attr 引用;

内部引用,需要 self.attr 引用。

php 有静态变量和常量,内部引用:static::attr 或 self::attr

实例属性外部引用:$obj->attr;内部引用:$this->attr

【类方法】

1、类方法定义

python 使用 def 关键词定义,与定义函数一样。

php 使用 function 关键词定义。

2、定义方法必须传入类实例作为第一个参数

python 类方法必须包含“类实例”参数 self(self 可以自己定义其他名字)

php 无此规则,且方法内使用 $this 调用类实例。

【继承】

1、继承方式

python 继承: class child(base),使用圆括号方式

php 继承:class child extend base 使用关键词:extend

2、多继承

python 支持多继承,且根据圆括号里面父类的顺序查找父类里面的方法:class child(base, base2, base3)

php 不支持多继承

【方法重写】

1、引入父类方法区别

python 使用 super() 类获得父类对象:super(Child, c).method();

php 直接使用 parent::method() 即可;

【类属性/方法权限】

1、类属性的私有声明

python 使用两个下划线开头(__)声明该属性是私有的。内部使用 self.__private_attr 访问;

php 使用 private $attr 声明私有属性。

2、类方法的私有化声明

python 两个下划线开头定义方法名声明私有方法:def __private_method(self);

php 使用 private menthod() 声明私有方法;

3、proteced 权限

python 无此权限

php 通过 protected 声明;

【类的专有方法】

python 有以下专用类方法:

__init__ : 构造函数,在生成对象时调用

__del__ : 析构函数,释放对象时使用

__repr__ : 打印,转换

__setitem__ : 按照索引赋值

__getitem__: 按照索引获取值

__len__: 获得长度

__cmp__: 比较运算

__call__: 函数调用

__add__: 加运算

__sub__: 减运算

__mul__: 乘运算

__truediv__: 除运算

__mod__: 求余运算

__pow__: 乘方

php 有以下专用类方法,也称为魔术方法:

•__construct(),类的构造函数

•__destruct(),类的析构函数

•__call(),在对象中调用一个不可访问方法时调用

•__callStatic(),用静态方式中调用一个不可访问方法时调用

•__get(),获得一个类的成员变量时调用

•__set(),设置一个类的成员变量时调用

•__isset(),当对不可访问属性调用isset()或empty()时调用

•__unset(),当对不可访问属性调用unset()时被调用。

•__sleep(),执行serialize()时,先会调用这个函数

•__wakeup(),执行unserialize()时,先会调用这个函数

•__toString(),类被当成字符串时的回应方法

•__invoke(),调用函数的方式调用一个对象时的回应方法

•__set_state(),调用var_export()导出类时,此静态方法会被调用。

•__clone(),当对象复制完成时调用

•__autoload(),尝试加载未定义的类

•__debugInfo(),打印所需调试信息

python php区别-Python3 面向对象 且与 PHP 区别相关推荐

  1. python菜鸟基础教程-Python3 面向对象

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...

  2. python 菜鸟-Python3 面向对象

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...

  3. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  4. python输入和输出的区别_python2和python3的输入和输出区别介绍

    Python3 输入和输出 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数. 第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdou ...

  5. python之路_面向对象

    1 >>> dict #类型dict就是类dict 2 <class 'dict'> 3 >>> d=dict(name='egon') #实例化 4 ...

  6. Python3 面向对象编程

    好记性不如烂笔头,对之前阅读书籍进行梳理与总结,此文为<Python3面向对象编程>阅读笔记. 文章目录 第一章 面向对象设计 第二章 Python对象 第三章 对象相似时 第四章 异常捕 ...

  7. 轻松玩转AI(从Python开始之Python3入门)

    轻松玩转AI路径: 从Python开始 [链接] 数据科学 [链接] 机器学习 [链接] 深度学习--神经网络 [链接] 从Python开始: Python3入门 [链接] Python3进阶 [链接 ...

  8. python3面向对象学习

    python3面向对象学习 面向对象 面向对象技术简介 类定义 类对象 self代表类的实例,而非类 类的方法 继承 多继承 方法重写 类属性与方法 类的私有属性 类的方法 类的私有方法 运算符重载 ...

  9. python3.7和3.8的区别-Python2.7和3.7区别

    区别一:print语法使用 Python2.7 print语法使用 >>> print "Hello Python" Python3.7 print语法使用 &g ...

最新文章

  1. linux记录用户命令的日志是,用日志记录Linux用户执行的每一条命令
  2. 插入透明32位png格式图片支持ie5.5+、 FF、chrome、safari
  3. vue+xterm.js 实现Linux command界面
  4. 华为mate40pro是鸿蒙系统么,预装鸿蒙OS系统,华为Mate40Pro鸿蒙版即将发布,略有遗憾...
  5. 前端很慌!React 称霸,Vue 凶猛,TypeScript 威逼 JavaScript
  6. [排错] Status error 2850
  7. oracle plsql破解
  8. 软考—软件设计师(中级)第5版
  9. linux格式化磁盘fdisk,linux下使用fdisk工具为磁盘分区格式化
  10. LeetCode精选TOP面试题(中等篇)【出现率降序】
  11. STM32机器人控制开发教程No.3 使用遥控控制电机/舵机(基于HAL库)
  12. 【蓝桥杯】Python字符串处理和应用
  13. 二代测序技术之illumina测序技术原理简介
  14. Latex表示随机变量相互独立,不独立
  15. 2022.05面试总结
  16. 制作自己的openwrt刷机包_手机刷机包如何制作?自己如何制作刷机包?
  17. Ajax 技术汇总(转载)
  18. ensp 配置DHCP
  19. Unity小技巧 - 绘制瞄准准心
  20. 新浪微博头条自动外推发帖引蜘蛛工具

热门文章

  1. VS2012+LUA环境搭建
  2. Educational Codeforces Round 50 (Rated for Div. 2)的A、B、C三题AC代码
  3. PHP中全局变量$_POST[]和$_GET[]
  4. jmeter响应数据Unicode编码转换为汉字
  5. thymeleaf模板的使用(转)
  6. 安装autoit libary失败问题解决
  7. java线程池【转】
  8. 2016.3.2(String 类)
  9. Rhythmk 一步一步学 JAVA(11)Ibatis 环境配置
  10. jQuery队列控制方法详解queue()/dequeue()/clearQueue()