我有点陷入我正在做的个人项目的中间。我有一个对我没有任何意义的场景,也不知道该怎么称呼它,所以我也没有从互联网上找到正确的答案。
如果您能为我提供以下示例的解决方案,我将非常感激。
我正在尝试执行以下操作:
我在不同的文件中有两个类/模块(后来也可能也在子目录中添加)。
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
这可能吗?
答案 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了解详情。