今天我正在尝试和/或搞乱Python 3.5。
我碰巧"意外地" 写下这个:
class Apple(object):
class green(object):
def eat():
print("You just ate a green apple...")
class red(object):
def eat():
print("You just ate a red apple...")
我现在可以这样做:
Apple.red.eat() # would print: "You just are a red apple..."
Apple.green.eat() # would print: "You just are a green apple..."
这让我想问一下,如何创建os.path.exists()
等功能,或者使用其他"方法" 创建它们?
这应该是固定的,还是故意的?
提前谢谢。
答案 0 :(得分:4)
类中的类在python中工作得很好 - 但是,python处理命名空间的主要机制是 modules 和 packages ,而不是类。我没有在课堂上找到很多用法(虽然可能有一些有效的用例)。
要设置os.path.exists
之类的内容,我会引导您转到source,除了os.path
做一些非常粗略的事情来设置其命名空间(修改sys.modules
)并避免使用包。除非您需要有条件地导入同名的不同内容,否则最好不要创建包...
在这种情况下,要设置包,您可以使用类似 1 的目录结构:
apples
+-- __init__.py (empty)
|
+-- base.py (holds BaseApple class)
|
+-- green.py (holds GreenApple which inherits from BaseApple)
|
+-- red.py (holds RedApple which inherits from BaseApple)
然后,假设您的PYTHONPATH可以正确找到所有内容,您可以这样做:
from apples.green import GreenApple
from apples.red import RedApple
1 显然,这只是许多方法之一,你可以设置它。如果没有一个真实的例子表明你很难提出任何具体的建议