鱼C论坛

 找回密码
 立即注册
查看: 1888|回复: 14

[已解决]求助

[复制链接]
发表于 2016-7-8 10:24:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
__add__(self,other)
不是很理解self和other表示的是什么
最佳答案
2016-7-8 10:32:42
x + y
则x是self
y是other
其实用self和other只是约定俗成,改用其他名字也可。
  1. >>> class Nint(int):
  2.         def __add__(self, other):
  3.                 return self * other

  4.        
  5. >>> x = Nint(3)
  6. >>> y = Nint(5)
  7. >>> x + y
  8. 15
  9. >>> class Nint(int):
  10.         def __add__(num1, num2):
  11.                 return num1 * num2

  12.        
  13. >>> x = Nint(3)
  14. >>> y = Nint(5)
  15. >>> x + y
  16. 15
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-7-8 10:30:10 | 显示全部楼层
class Nstr(str):
    def __sub__(self, other):
        return self.replace(other, '')
就是return部分看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 10:32:42 | 显示全部楼层    本楼为最佳答案   
x + y
则x是self
y是other
其实用self和other只是约定俗成,改用其他名字也可。
  1. >>> class Nint(int):
  2.         def __add__(self, other):
  3.                 return self * other

  4.        
  5. >>> x = Nint(3)
  6. >>> y = Nint(5)
  7. >>> x + y
  8. 15
  9. >>> class Nint(int):
  10.         def __add__(num1, num2):
  11.                 return num1 * num2

  12.        
  13. >>> x = Nint(3)
  14. >>> y = Nint(5)
  15. >>> x + y
  16. 15
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 10:47:07 | 显示全部楼层
Josepy 发表于 2016-7-8 10:30
class Nstr(str):
    def __sub__(self, other):
        return self.replace(other, '')

返回的是将第一个字符串中与第二个字符串相同部分删掉。
a = 'asd'
b = 'a'
a - b
'sd'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 10:47:31 | 显示全部楼层
定义了一个 Nint 类
此类重定义了 “+” 操作 的 元方法 __add__
把 + 操作 重新定义为 *

所以, x+y 实质上是 x*y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 10:54:15 | 显示全部楼层
Josepy 发表于 2016-7-8 10:30
class Nstr(str):
    def __sub__(self, other):
        return self.replace(other, '')

重定义 元方法 __sub__  为 replace

意思就是: - 减号 表示在 self 中把 other 替换为 '' 空串

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 16:16:15 | 显示全部楼层
越看越蒙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-8 17:20:07 | 显示全部楼层

初学者是会费些脑筋~

你在python中输入 dir(5)
看看 整数5 带有元方法
5 在python中实际上是 整数类 的 对象实例,
不单单只有数值5,还具有一系列与整数类相关的方法。

再 输入  help(5)
就看到了 整数类的定义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-11 09:45:59 | 显示全部楼层
冬雪雪冬 发表于 2016-7-8 10:47
返回的是将第一个字符串中与第二个字符串相同部分删掉。
a = 'asd'
b = 'a'

明白了谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-11 09:47:09 | 显示全部楼层
SixPy 发表于 2016-7-8 10:54
重定义 元方法 __sub__  为 replace

意思就是: - 减号 表示在 self 中把 other 替换为 '' 空串

懂了,谢谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-11 10:09:26 | 显示全部楼层
冬雪雪冬 发表于 2016-7-8 10:47
返回的是将第一个字符串中与第二个字符串相同部分删掉。
a = 'asd'
b = 'a'

class Nstr:
        def __init__(self,arg = ''):
                if isinstance(arg,str):
                        self.total = 0
                        for each in arg:
                                self.total += ord(each)
>>>a = Nstr('acd')
>>> b = Nstr('BCD')
这一部分怎么入参的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-11 10:35:19 | 显示全部楼层
Josepy 发表于 2016-7-11 10:09
class Nstr:
        def __init__(self,arg = ''):
                if isinstance(arg,str):

arg就是你类实例化时代入的值,如'acd', 'BCD'
这个类的含义是参数如果是字符串,则把每个字符的ascii码相加到属性total中。
如果参数不是字符串则没有total属性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-11 11:46:26 | 显示全部楼层
Josepy 发表于 2016-7-11 10:09
class Nstr:
        def __init__(self,arg = ''):
                if isinstance(arg,str):

class Nstr:
        def __init__(self,arg = ''):

------------
class Nstr: #定义 类 名称,以及 继承关系。
        def __init__(self,arg = ''): # 定义 类 创建实例时的 初始化方法。

self 就是 Nstr 自身。
python的硬性规定,类中定义的函数的第一个形参是留给 类自身,Python的臭毛病~~


arg 这才是调用函数时要指定的 形参。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-11 16:28:14 | 显示全部楼层
SixPy 发表于 2016-7-11 11:46
class Nstr:
        def __init__(self,arg = ''):

class Nstr(arg):
这样写对不对呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-11 16:38:14 | 显示全部楼层
Josepy 发表于 2016-7-11 16:28
class Nstr(arg):
这样写对不对呢

认真看13楼~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 22:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表