python php区别-Python3 面向对象 且与 PHP 区别

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

【类对象】

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(),打印所需调试信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值