快速概述OOP php到python?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了快速概述OOP php到python?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1996字,纯文字阅读大概需要3分钟。
内容图文
![快速概述OOP php到python?](/upload/InfoBanner/zyjiaocheng/764/01908435af344c2faf54f08bd60074f1.jpg)
我来自PHP并快速学习OOP Python基础PHP的知识
例如,我有一个班级
<?php
class Cat{
private $name;
private $age;
private $color;
public function getName()
{
return $this->name;
}
public function setName($value)
{
$this->name = $value;
}
public function getAge()
{
return $this->age;
}
public function setAge($value)
{
$this->age = $value;
}
public function getColor()
{
return $this->color;
}
public function setColor($value)
{
$this->color = $value;
}
}
?>
什么是python OOP代码的等价?
解决方法:
一个确切的等价物是这样的:
class Cat(object):
def __init__(self, name...):
self.__name = name # __ make the var private
...
def getName(self):
return self.__name
def setName(self, name):
self.__name = name
...
它会工作,但你永远不会在Python中这样做.原因如下:
>在Python中没有什么是私密的,你总是可以使用这种语言中的一些技巧来绕过限制.因此,您通常会重视执行行为的更多通信,文档和API.
>直接访问属性在Python中完全没问题.如果你在获取或设置时没有特别的东西,那么你就不会写getter和setter.最好的Python库可以做到这一点.
>你有一些叫做“属性”的东西,可以让你在事后改变主意.如果在1个月内,您决定在获取和设置var时执行某些操作,则可以在不更改API的情况下执行此操作.
以下是如何在适当的Python中使用它:
class Cat(object):
def __init__(self, name):
self.name = name
c = Cat('billy')
print c.name
# billy
c.name = 'kit'
print c.name
# kit
现在,如果突然想要改变主意并确保名称在存储时始终充分利用,该怎么办?您只需添加一个属性:
class Cat(object):
def __init__(self, name):
self._name = name # '_' is just a convention and does nothing
@property # when you do cat.name, it will call this function
def name(self):
return self._name
@name.setter # when you do cat.name = x, it will call this function
def name(self, name):
""" Make the name uppercase when setting it """
self._name = name.upper()
代码更改,但从外部看,它看起来完全一样:
c = Cat('billy')
print c.name
# BILLY
c.name = 'kit'
print c.name
# KIT
主要好处是什么?
>您不必在大多数情况下编写getter和setter,同样的时间并使代码更短,因此更容易阅读.
>如果你改变主意,你总是可以写一个getter / setter.只有你需要的那个,而不是所有其他的. API保持一致.
内容总结
以上是互联网集市为您收集整理的快速概述OOP php到python?全部内容,希望文章能够帮你解决快速概述OOP php到python?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。