我需要"自我"和"他人"吗?

你好,
我找到了一个示例,该示例将两个向量添加为一个
班级的方法.看起来这样:
班级向量:
def __add __(自我,其他):
数据= []
对于J范围(len(self.data))):
data.append(self.data [j] + other.data [j])
返回向量(数据)
在此示例中,一个人使用"自我"和"其他".真的需要吗
用这个话?而且,如果是,为什么?我已经用" x"代替"自我",
"其他" by" y",一切看起来还不错.真的还可以还是我可以
在某些情况下有些问题?
谢谢!

# 回答1


库尔达Yon写道:
您可以使用任何想要的(有效)名称,但通常是"自我"和"其他"
用于清晰.在这种情况下,它们表示操作的向量
在(" self")和另一个向量("其他")上.使用" X"和" Y"将不太清楚
这里.
- -
汉斯·诺瓦克(Zephyrfalcon,gmail dot com)http://4.flowsnake.org/
# 回答2


在6月27日,下午6:32,汉斯·诺瓦克(Hans Nowak)
写道:
您可以使用任何想要的(有效)名称,但通常是"自我"和"其他"
用于清晰.在这种情况下,它们表示操作的向量
在(" self")和另一个向量("其他")上.使用" X"和" Y"将不太清楚
这里.
- -
汉斯·诺瓦克(Zephyrfalcon,gmail dot com)http://4.flowsnake.org/
好的我明白了.在给定的示例中,"自我"只是一个可以是的名字
替换为任何(有效)名称.总是这样吗?我是说,
在某些情况下," slef"是否具有特殊的含义,或者总是"
像其他任何人一样的名字,"我在问,因为"自我"突出显示了
在我的文本编辑器中,我认为它可以具有特殊的含义.我
还听说"自我"是指一个对象,我不确定那是什么
"参考"的意思.
# 回答3


库尔达Yon写道:
是的.
方法是绑定到类或实例的函数.
DEF语句创建功能.参数名称是任意的,只要
因为它们与您要从
在功能中.
自我(和其他)只是社区惯例.他们确实有他们
优势是,如果它们仅用作函数/方法参数名称,
那么他们将不会与任何模块全球群体冲突.
tjr
# 回答4


特里·里迪(Terry Reedy)写道:
是的.
方法是绑定到类或实例的函数.
DEF语句创建功能.参数名称是任意的,只要
因为它们与您要从
在功能中.
自我(和其他)只是社区惯例.他们确实有他们
优势是,如果它们仅用作函数/方法参数名称,
那么他们将不会与任何模块全球群体冲突.
值得注意的是,方法的第一个参数是
极强的惯例.我强烈鼓励您遵循它.尤其是,
classMethods和staticMethods不将课程实例作为第一个
参数,因此使用"自我"例如方法," cls"用于classMethods,并且
没有什么特别的staticme thods(因为第一个论点并不特别
完全),在阅读时有助于区分它们.您冒着烦恼读者的风险
在实例方法中使用"自我"以外的东西.
相比之下,将"其他"用于其他论点与二进制__MATHOPERATION __
方法不是特别强烈的惯例.如果你没有人会生气
使用其他东西.
- -
罗伯特·克恩(Robert Kern)
"我已经相信整个世界都是一个谜,无害的谜
这是我们自己疯狂地尝试解释它的可怕的
一个基本的真理."
-Umberto Eco
# 回答5


2008年6月27日星期五06:41:22 PM Kurda Yon写道:
这是一个名字,就像其他任何人一样.
它仅在大多数Python程序员的心中都有特殊的含义.那个名字
使用公约(仅由于惯例)来使用...
erm ...'自我'对象.
也就是说,在所有Python公约中,它也许是最热心的公约
紧随其后.这就是为什么您的编辑突出显示它的原因.
因此,如果您使用任何其他有效名称而不是自我,则代码不会破坏.但
你不应该.除了可读性外,一切都将完美地工作.
干杯,
- -
路易斯·扎拉贝蒂亚(又名凯里)
FAC. deMatemáticayComputación,UH. http://profesores.matcom.uh.cu/~kyrie
# 回答6


-----开始PGP签名消息-----
哈希:sha1
库尔达Yon写道:
在Python中,定义班级的方法时,您将自我作为一个
对这些方法进行论点,以便他们可以访问该类
变量和方法.
例子:
类foo():
self.x = 5
def bar(self):
打印self.x
def baz():
打印self.x#这引起了错误.
-----开始PGP签名-------------
版本:gnupg v1.4.9(mingw32)
评论:将gnupg与mozilla一起使用-http://enigmail.mozdev.org
ieyearecaayfakhlg3qacgkqlmi5fndav9gqzgcfrv15fqwgb9 +n7lz6jymfxdez
0FYAN0FK90XFR7IN/B9TJFLWBRFCSGSS
= qyxg
-----结束PGP签名-----
# 回答7


在文章中
<68 **************************************************@a70g2000hsh. GoogleGroups.com>,
kurda yon 从技术上讲,Python不在乎您称之为什么.你可以写:
def __ADD __(luxury_yacht,喉咙_WARBLER_MANGROVE):
等,等等
它将运行完全相同.话虽如此,不要那样做.这
使用"自我"和"其他"几乎是严格的.经验丰富的python
编程人员将立即理解他们的含义.如果您使用任何东西
否则,他们将不得不花更多的时间尝试理解您的代码.
# 回答8


在文章中
<04 ********************************************************@p25g2000hsf. GoogleGroups.com>,
kurda yon 它绝对没有特殊的含义.使用" self"名称是纯粹的
惯例.
我使用emacs,emacs中的python模式也突出显示了它,好像是
关键字.但是,这只是一个外部工具,可以自由地做任何事情
它想要.
# 回答9


LE 2008年6月28日星期六00:17:33 Kurda Yon,VousAvezécrit*:
是的,他确实如此,因为一个人确实需要遵循一种语言的惯例,
w 即使他们不属于其语法,也属于该语言.你应该
看看Pep 8:http://www.python.org/dev/peps/pep-0008/
自我是InstanceMethod隐含论点的好名字.
另一个是二进制操作员定义中广泛用于RVALUE的名称.
至于惯例,您的构造函数矢量(iTable)有望是
复制构造函数,这意味着向量的__init__方法有点像
这个 :
def __init __(self,itobles =()):
self.data = list(iTable)#创建Parmeter的副本
首先,self.data应重命名为self._data,请参阅Pep 8.
因为数据可能不是您对象的API的一部分.
然后,这使您的代码有些好奇,您可以创建一个列表来添加两个
向量,然后将其复制以创建结果矢量,消耗两次
需要内存.
最后,您可能会直接从内置类型继承
列表.
这是我对矢量类的建议(与其他一些增强功能):
类向量(列表):
def __init __(self,itobles =()):
def __init __(self,itobles =()):
列表.__ init __(自我,迭代)
def __repr __(自我):
返回'vector(%s)'%列表.__rep __(self)
def __add __(自我,其他):
res = vector()
对于我,枚举(自我)中的精灵:
res.Append(ELT +其他[I])
返回res
请注意,我不知道您要如何处理不同维度的向量,
您可能应该提高价值.
还需要枚举" i in xrange(len(iToble))"之前使用枚举.
是在内置的,但很丑陋.
最后,要采取更有效的样式,该方法本来可以
像这样写:
从Itertools导入IZIP
...
def __add __(自我,其他):
返回向量(x + y for x,y in izip(self,其他))
- -
_____________
Maric Michaud
# 回答10


在2008年6月27日星期五20:19:00 -0400,尼克·杜马斯(Nick Dumas) [狙击]
您是否尝试过要发布的内容?
Python 2.4.3(#2,2006年10月6日,07:52:30)
[GCC 4.0.3(Ubuntu 4.0.3-1ubuntu5)]在Linux2上
键入"帮助","版权","学分"或"许可"以获取更多信息.
文件" ",第1行
类foo():
^
语法:语法无效
.... self.x = 5
...
Trackback(最近的最新电话):
文件" ",第1行,在?
文件" ",第2行,在foo中
名称:名称"自我"未定义
- -
要给我发送电子邮件,请无用 - > spamcop,无效 - > net.
# 回答11


-----开始PGP签名消息-----
哈希:sha1
彼得·皮尔森(Peter Pearson)写道:
您是否尝试过要发布的内容?
Python 2.4.3(#2,2006年10月6日,07:52:30)
[GCC 4.0.3(Ubuntu 4.0.3-1ubuntu5)]在Linux2上
键入"帮助","版权","学分"或"许可"以获取更多信息.
文件" ",第1行
类foo():
^
语法:语法无效
.... self.x = 5
...
Trackback(最近的最新电话):
文件" ",第1行,在?
文件" ",第2行,在foo中
名称:名称"自我"未定义
是的,回头看... Bleh.不是聪明的错别字.但是我确实运行了
- - proper-code,我学到了一些有关python和类的知识.
对不起,伙计们.
-----开始PGP签名-------------
版本:gnupg v1.4.9(mingw32)
评论:将gnupg与mozilla一起使用-http://enigmail.mozdev.org
ieyearecaayfakhmfb8acgkqlmi5fndav9gawgccdjdivhhahd t4r/k8ipqojalv
hrianrgt5kelazbf42y3084zwqlz/fjt
= VE7Z
-----结束PGP签名-----
# 回答12


库尔达Yon写道:
实例方法中的第一个参数" self"是约定,我会
建议不要更改它.当" self"参数自动通过
您将方法称为这样:
self.method(param)
这将被定义为:
def方法(self,param):
#在这里做某事
自我就像java中的"这个",除非明确添加到
参数列表作为第一个参数.你可以什么名字
想要,但是Python程序员会为您命名的西红柿
其他东西:-),因为如果实例为
看法.有时您必须明确地通过它,就像打电话时
您父母的方法,当您学习继承时,您会看到这一点.
我希望有帮助,"自我"参数是第一次把我混在一起
我看过.
加布里埃尔
# 回答13


在文章中
<68 **************************************************@a70g2000hsh. GoogleGroups.com>,
kurda yon 其他人说的是:是的.
话虽如此,在我看来,这正是
在" x"和" y"方面有很多意义的情况 - 自我意味着
这是调用该方法的对象,并且
这似乎无关紧要:如果您想计算x + y
您使用X.Data和Y.Data ...
Otoh,我曾经看到一个库(某人的python任意精神
Reals包)在他使用X和Y的地方,果然我是
使困惑.
otooh,我没有很长时间感到困惑,我很快就决定了
它实际上使_ That_代码看起来更有意义.
- -
David C. Ullrich

标签: python

添加新评论