gpt4 book ai didi

python - 如何设置Python包/模块目录和类定义以实现直观命名

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:41 24 4
gpt4 key购买 nike

我一直在寻找这个,但找不到任何东西。我是一名经验丰富的程序员,但最近转向了 Python。

简而言之,我想将相关类的面向对象库扩展/发展为具有多个单独文件的命名空间(由于复杂性和增加模块化的愿望):

目前,我可能有:

# file lib/NameSpace.py

class Foo(object):
def __init__(self):
....

class Bar(object):
def __init__(self):
....

class Baz(object):
def __init__(self):
....

这样我的程序就可以做到这一点:

import NameSpace
a = NameSpace.Foo()
b = NameSpace.Bar()

现在,这些类变得越来越复杂,并且 Foo 和 Bar 尽管在概念命名空间中相关,但在功能上有所不同,因此我想将它们移动到命名空间内的单独文件,但在其他方面保持我的代码库相同。

所以,我想我想要一个像这样的文件结构:

lib/NameSpace
lib/NameSpace/__init__.py
lib/NameSpace/Foo.py
lib/NameSpace/Bar.py
lib/NameSpace/Baz.py

但这需要我更改所有运行时代码来初始化它们:

import NameSpace.Foo
a = NameSpace.Foo.Foo()

# ***Boo.**** Why u not like 'a = NameSpace.Foo()'?

那么,我如何构造这些东西而不需要将“Foo”类名添加到模块“Foo”中?我可以通过将 init.py 编辑为工厂来完成此任务,如下所示:

#lib/NameSpace/__init__.py

import NameSpace.Foo as NSF

def Foo(*args, **kwargs):
return(NSF.Foo(*args,**kwargs))

但这似乎比我对 Python 的期望更不优雅。有更好的方法吗?

最佳答案

在你的__init__.py

from .Foo import Foo
from .Bar import Bar
from .Baz import Baz

以与类不同的方式命名文件可以防止覆盖。

关于python - 如何设置Python包/模块目录和类定义以实现直观命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com