免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 56628 | 回复: 4

获取继承程序的路径 [复制链接]

论坛徽章:
0
发表于 2016-08-04 22:10 |显示全部楼层
类A和类B分别在/tmp/a.py和/temp/b.py两个程序中,B继承A,A里有个方法是用获取当前程序所在的路径(即:获取到的路径是/tmp/a.py),那么通过什么方法我可以获取到B所在程序的路径(/temp/b.py)呢?说明:在B中不能添加新的方法。

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2016-08-05 08:31 |显示全部楼层
回复 1# itryhang


    这个最简单的是os.path.dirname(__file__)就可以得到路径了。但不知道你说的是什么。

论坛徽章:
0
发表于 2016-08-05 11:17 |显示全部楼层
就是在子类不新建方法基础上,能否在父类中获取到子类所在程序的路径?

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2016-08-05 12:44 |显示全部楼层
本帖最后由 jeppeter 于 2016-08-05 13:14 编辑

回复 1# itryhang

  1. import sys
  2. import os
  3. import inspect
  4. import importlib

  5. class AClass(object):
  6.         def __init__(self):
  7.                 mod = importlib.import_module(self.__class__.__module__)
  8.                 self.__callerfile = getattr(mod,'__file__',__file__)
  9.                 return

  10.         def path(self):
  11.                 print('path %s'%(self.__callerfile))
  12.                 return


  13. def main():
  14.         a = AClass()
  15.         a.path()

  16. if __name__ == '__main__':
  17.         main()
复制代码
这里你可能要修改一下,就能满足你的要求了。

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
发表于 2016-08-05 13:31 |显示全部楼层
这是个错误的问题

如果没有B的实例, 你是不可能获取到B实在的文件的,甚至你都不可能知道存在B这个类

或者你已经导入了B所在的模块,还问这个问题? 直接 module.__file__ 把pyc改为py
如果你已经有了B的实例,同上 obj.__module__.__file__ 把pyc改为py

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP