在python

时间:2017-11-06 09:15:53

标签: python class inheritance python-module

我有点陷入我正在做的个人项目的中间。我有一个对我没有任何意义的场景,也不知道该怎么称呼它,所以我也没有从互联网上找到正确的答案。

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

我正在尝试执行以下操作:

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

client.py

class client(object):
    def __init__(self, user, key, address):
        self.user = user
        self.key = key
        self.address = address

foo.py

class foo(client):
    print(client.user, client.key, client.address)

现在我想通过首先启动client()类来调用foo()。所以我的test.py文件看起来应该是这样的,它应该打印我在启动客户端类时给出的值。

test.py

import client
f = client("x", "passkeyXX","10.192.0.1")
f.foo() ## should print the values given above

这可能吗?

2 个答案:

答案 0 :(得分:0)

您可以在一个课程中完成此课程,而不是同时创建两个课程:

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)

现在,您可以在测试中的某个位置导入类Client。

from client import Client

制作实例:

c = Client(user='user1', key='sdf234sdf13', address='USA, New York')

调用c.foo(),它应该打印出你需要的东西,但这很奇怪,但

答案 1 :(得分:0)

要根据其父级之一初始化子级,您可以调用super方法

方法1:在__init__方法

class foo(client):
    def __init__(self):
        super(self, client).__init__(self, user, key, address)

方法2:关于特定对象的创建

bar = foo().super(self, client).__init__(<user>, <key>,< address>) 

查看docs了解详情。