用python在不同文件中编写子模块

用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

我被困在一个我正在做的个人项目中。我有一个场景对我来说毫无意义,我也不知道该怎么称呼它,所以我也没有从互联网上找到正确的答案

如果您能为我提供以下示例的解决方案,我将非常感激

我正在努力做到以下几点:

我在不同的文件中有两个类/模块(稍后可能还会在子目录中添加)

client.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
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()的一部分。如果你能给我举个这样的例子,那就太棒了!谢谢