Python 一个类中的一个类,这应该是固定的还是有意的?
今天我在试验和/或摆弄Python 3.5 我碰巧“无意”写下了这样一句话:Python 一个类中的一个类,这应该是固定的还是有意的?,python,class,python-3.x,inner-classes,python-3.5,Python,Class,Python 3.x,Inner Classes,Python 3.5,今天我在试验和/或摆弄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...") 意思
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()
之类的函数是如何创建的,还是使用另一种“方法”创建的?这是应该纠正的,还是故意的
提前感谢。类中的类在python中工作得很好——但是,python处理名称空间的主要机制是模块和包,而不是类。我还没有发现类在类中有很多用途(尽管可能有一些有效的用例) 要设置类似于
os.path.exists
的内容,我会将您引导到,除了os.path
做了一些非常粗略的事情来设置其名称空间(修改sys.modules
)并避免使用包之外。您最好创建一个包,除非您需要有条件地以相同的名称导入不同的内容
在这种情况下,要设置包,可以使用类似于1的目录结构:
然后,假设你的蟒蛇能正确地找到所有东西,你会:
from apples.green import GreenApple
from apples.red import RedApple
1显然,这只是您可以设置它的多种方法之一。如果没有一个实际的示例来说明您正在做什么,就很难给出任何具体的建议类中的类在python中工作得很好——然而,python处理名称空间的主要机制是模块和包,而不是类。我还没有发现类在类中有很多用途(尽管可能有一些有效的用例) 要设置类似于
os.path.exists
的内容,我会将您引导到,除了os.path
做了一些非常粗略的事情来设置其名称空间(修改sys.modules
)并避免使用包之外。您最好创建一个包,除非您需要有条件地以相同的名称导入不同的内容
在这种情况下,要设置包,可以使用类似于1的目录结构:
然后,假设你的蟒蛇能正确地找到所有东西,你会:
from apples.green import GreenApple
from apples.red import RedApple
1显然,这只是您可以设置它的多种方法之一。如果没有你正在做的事情的真实例子,很难给出任何具体的建议我不确定,但我认为
import os
从os.py
获取所有内容。。。因此path
必须是os.py
文件中的class
,并且exists()
必须是path
类中的函数。os.path
是子模块,os
是一个包。如果os.path
是一个类,那么您可以创建没有任何意义的os.path
的实例,代码也存在同样的问题。执行x=Apple.red();x、 eat()
引发错误,因为eat
不是有效的方法(缺少self
参数),我不确定,但我认为import os
从os.py
获取所有内容。。。因此path
必须是os.py
文件中的class
,并且exists()
必须是path
类中的函数。os.path
是子模块,os
是一个包。如果os.path
是一个类,那么您可以创建没有任何意义的os.path
的实例,代码也存在同样的问题。执行x=Apple.red();x、 eat()
引发错误,因为eat
不是有效的方法(缺少self
参数)。感谢您的时间和帮助,我非常感谢,+1。感谢您的时间和帮助,我非常感谢,+1。