鱼C论坛

 找回密码
 立即注册
查看: 1522|回复: 3

[已解决]如何看到当前类的所有子类和父类?

[复制链接]
发表于 2017-8-28 19:29:06 | 显示全部楼层 |阅读模式

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

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

x
另外 可以在类外面或者别的类里定义这个类的方法吗
最佳答案
2017-8-29 09:29:12
本帖最后由 ooxx7788 于 2017-8-29 09:40 编辑
  1. >>> class A:
  2.         pass

  3. >>> A.put = lambda x : x**2
  4. >>> A.put(2)
  5. 4
  6. >>> a = A()
  7. >>> a.put(2)
  8. Traceback (most recent call last):
  9.   File "<pyshell#24>", line 1, in <module>
  10.     a.put(2)
  11. TypeError: <lambda>() takes 1 positional argument but 2 were given
  12. >>> a.put()
  13. Traceback (most recent call last):
  14.   File "<pyshell#25>", line 1, in <module>
  15.     a.put()
  16.   File "<pyshell#21>", line 1, in <lambda>
  17.     A.put = lambda x : x**2
  18. TypeError: unsupported operand type(s) for ** or pow(): 'A' and 'int'
  19. >>> A.put = lambda self,x:x**2
  20. >>> b = A()
  21. >>> b.put(2)
  22. 4
  23. >>> a.put(2)
  24. 4
  25. >>> A.put(2)
  26. Traceback (most recent call last):
  27.   File "<pyshell#30>", line 1, in <module>
  28.     A.put(2)
  29. TypeError: <lambda>() missing 1 required positional argument: 'x'
复制代码


根据以上代码可以看出,理论上应该算是可以的,但实际上,有点蛋疼的。

查看父类可以用
  1. >>> A.mro()
  2. [<class '__main__.A'>, <class 'object'>]
复制代码


直接查看子类的方法,好像没有
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-8-29 09:29:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ooxx7788 于 2017-8-29 09:40 编辑
  1. >>> class A:
  2.         pass

  3. >>> A.put = lambda x : x**2
  4. >>> A.put(2)
  5. 4
  6. >>> a = A()
  7. >>> a.put(2)
  8. Traceback (most recent call last):
  9.   File "<pyshell#24>", line 1, in <module>
  10.     a.put(2)
  11. TypeError: <lambda>() takes 1 positional argument but 2 were given
  12. >>> a.put()
  13. Traceback (most recent call last):
  14.   File "<pyshell#25>", line 1, in <module>
  15.     a.put()
  16.   File "<pyshell#21>", line 1, in <lambda>
  17.     A.put = lambda x : x**2
  18. TypeError: unsupported operand type(s) for ** or pow(): 'A' and 'int'
  19. >>> A.put = lambda self,x:x**2
  20. >>> b = A()
  21. >>> b.put(2)
  22. 4
  23. >>> a.put(2)
  24. 4
  25. >>> A.put(2)
  26. Traceback (most recent call last):
  27.   File "<pyshell#30>", line 1, in <module>
  28.     A.put(2)
  29. TypeError: <lambda>() missing 1 required positional argument: 'x'
复制代码


根据以上代码可以看出,理论上应该算是可以的,但实际上,有点蛋疼的。

查看父类可以用
  1. >>> A.mro()
  2. [<class '__main__.A'>, <class 'object'>]
复制代码


直接查看子类的方法,好像没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-30 03:21:31 | 显示全部楼层
本帖最后由 kikouousya 于 2017-8-30 03:23 编辑
ooxx7788 发表于 2017-8-29 09:29
根据以上代码可以看出,理论上应该算是可以的,但实际上,有点蛋疼的。

查看父类可以用


原来如此 把属性赋值成函数就好了啊
所以想看到有哪些子类 只能每个类先弄个列表 在定义子类的时候往父类列表里加了啊..?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 09:05:00 | 显示全部楼层
kikouousya 发表于 2017-8-30 03:21
原来如此 把属性赋值成函数就好了啊
所以想看到有哪些子类 只能每个类先弄个列表 在定义子类的时候往 ...

你说的这个也不失为一种办法吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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