用python在不同文件中编写子模块
我被困在一个我正在做的个人项目中。我有一个场景对我来说毫无意义,我也不知道该怎么称呼它,所以我也没有从互联网上找到正确的答案 如果您能为我提供以下示例的解决方案,我将非常感激 我正在努力做到以下几点: 我在不同的文件中有两个类/模块(稍后可能还会在子目录中添加) client.py用python在不同文件中编写子模块,python,class,inheritance,python-module,Python,Class,Inheritance,Python Module,我被困在一个我正在做的个人项目中。我有一个场景对我来说毫无意义,我也不知道该怎么称呼它,所以我也没有从互联网上找到正确的答案 如果您能为我提供以下示例的解决方案,我将非常感激 我正在努力做到以下几点: 我在不同的文件中有两个类/模块(稍后可能还会在子目录中添加) client.py class client(object): def __init__(self, user, key, address): self.user = user self.key
class client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
class foo(client):
print(client.user, client.key, client.address)
import client
f = client("x", "passkeyXX","10.192.0.1")
f.foo() ## should print the values given above
foo.py
class client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
class foo(client):
print(client.user, client.key, client.address)
import client
f = client("x", "passkeyXX","10.192.0.1")
f.foo() ## should print the values given above
现在我想通过首先启动client()类来调用foo()。所以我的test.py文件应该是这样的,它应该打印我在启动客户机类时给出的值
test.py
class client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
class foo(client):
print(client.user, client.key, client.address)
import client
f = client("x", "passkeyXX","10.192.0.1")
f.foo() ## should print the values given above
这是可能的吗?您可以在一个类中实现这一点,但不能同时创建两个类:
class Client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
def foo(self):
print(self.user, self.key, self.address)
然后在测试中实例化它:
c = Client(user='user1', key='sdf234sdf13', address='USA, New York')
并调用所需的方法foo
:
c.foo()
您将得到以下回报:
user1 sdf234sdf13美国,纽约
更新:
在client.py中
from foo import foo as _f
class Client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
def foo(self):
return _f(self.user, self.key, self.address)
在foo.py中:
def foo(user, key, address):
print(user, key, address)
现在,您可以在测试中的某个地方导入类客户机
from client import Client
举例说明:
c = Client(user='user1', key='sdf234sdf13', address='USA, New York')
调用
c.foo()
,它会打印出您需要的内容,但这太奇怪了,您可以在一个类中创建它,而不是同时创建两个类:
class Client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
def foo(self):
print(self.user, self.key, self.address)
然后在测试中实例化它:
c = Client(user='user1', key='sdf234sdf13', address='USA, New York')
并调用所需的方法foo
:
c.foo()
您将得到以下回报:
user1 sdf234sdf13美国,纽约
更新:
在client.py中
from foo import foo as _f
class Client(object):
def __init__(self, user, key, address):
self.user = user
self.key = key
self.address = address
def foo(self):
return _f(self.user, self.key, self.address)
在foo.py中:
def foo(user, key, address):
print(user, key, address)
现在,您可以在测试中的某个地方导入类客户机
from client import Client
举例说明:
c = Client(user='user1', key='sdf234sdf13', address='USA, New York')
调用
c.foo()
它会打印出您需要的内容,但这很奇怪,尽管要基于其父类之一初始化子类,您可以调用super
方法
class foo(client):
def __init__(self):
super(self, client).__init__(self, user, key, address)
方法1:在\uuuu init\uuu
方法中
class foo(client):
def __init__(self):
super(self, client).__init__(self, user, key, address)
方法2:创建特定对象时
bar = foo().super(self, client).__init__(<user>, <key>,< address>)
bar=foo().super(self,client)。\uuuu init\uuuu(,)
查看以了解详细信息。要基于其父类之一初始化子类,可以调用
super
方法
class foo(client):
def __init__(self):
super(self, client).__init__(self, user, key, address)
方法1:在\uuuu init\uuu
方法中
class foo(client):
def __init__(self):
super(self, client).__init__(self, user, key, address)
方法2:创建特定对象时
bar = foo().super(self, client).__init__(<user>, <key>,< address>)
bar=foo().super(self,client)。\uuuu init\uuuu(,)
查看以了解详细信息。init需要一个自引用,您是否检查了导入是否有效?您可能需要使用client.py调用它,并根据保存声音的位置为其指定路径,就像您尝试执行类似的操作-->初始化需要一个自引用,您是否检查了导入是否有效?您可能需要使用client.py调用它,并根据保存声音的位置为其指定路径,就像您尝试执行类似的操作-->谢谢您的回答。但我恐怕我不是真的在寻找那个。我可以按照您的建议,在同一个文件中为客户机类编写方法。但那不是我想要的。我需要在不同的文件中编写foo(),我需要创建client类的类foo()子类,但我需要为foo()创建单独的文件。我问这个问题的原因是因为我有几个(超过50个类)类似foo()的类,它们将驻留在我的模块目录中。你看,你所说的这不是子类化,也不符合逻辑。“foo”不能是类,但我可以使它像类Client的函数一样工作,并被称为“c.foo()。你想让我这么做吗?请随意提问。是的。我看到了错误。但情况仍然不会改变。我只想将foo()与client.py放在一个单独的文件中,并且作为方法或子类仍然是client()的一部分。如果你能给我举个这样的例子,那就太棒了!谢谢谢谢你的回答。但我恐怕我不是真的在寻找那个。我可以按照您的建议,在同一个文件中为客户机类编写方法。但那不是我想要的。我需要在不同的文件中编写foo(),我需要创建client类的类foo()子类,但我需要为foo()创建单独的文件。我问这个问题的原因是因为我有几个(超过50个类)类似foo()的类,它们将驻留在我的模块目录中。你看,你所说的这不是子类化,也不符合逻辑。“foo”不能是类,但我可以使它像类Client的函数一样工作,并被称为“c.foo()。你想让我这么做吗?请随意提问。是的。我看到了错误。但情况仍然不会改变。我只想将foo()与client.py放在一个单独的文件中,并且作为方法或子类仍然是client()的一部分。如果你能给我举个这样的例子,那就太棒了!谢谢