如何使用属于一个类的对象,在另一个不同类中的对象?我尝试了不同的方法,但是仍然没有解决方案。假设我有以下示例代码:
class ClassA():
def __init__(self):
print "I am ClassA"
def methodA(self):
print "Method executed"
class ClassB():
def __init__(self):
print "I am ClassB"
self.varB = 0
def methodB(self):
if self.varB == 0:
# Error here
self.objectA.methodA()
else:
print "Method not executed"
class ClassC():
def __init__(self):
print "I am ClassC"
self.objectA = ClassA()
self.objectA.methodA()
#Step 1:
obj1 = ClassC()
#Step 2:
obj2 = ClassB()
#Step 3: (Gives error)
obj2 = methodB()
在此示例中,我有三个类。在ClassC
中,我创建一个ClassA
的实例,该实例用于执行相应的方法(methodA
)。如果之后我们继续执行“步骤1”,则输出为:
我是ClassC
我是ClassA
方法已执行
然后,在“步骤2”中,创建一个ClassB
的新对象。在最后一个输出之后,我们现在也得到了:
我是ClassB
当我对最后一个对象执行methodB
时,问题出在“步骤3”上。错误:
AttributeError:ClassB实例没有属性'objectA'
我非常清楚错误的根源。我不能简单地在ClassC
的方法内使用在ClassB
中创建的实例。
有人知道吗,我如何从ClassB
访问我在其他类(objectA
)中创建的实例(在这种情况下为ClassC
)?
答案 0 :(得分:1)
objectA
属于类C的特定实例。因此,您必须以某种方式将此实例传递给类B的实例。使用它的方式,可能在类B的构造函数中:
def __init__(self, c):
print "I am ClassB"
self.varB = 0
self.objectA = c.objectA
然后
obj2 = ClassB(obj1)
答案 1 :(得分:1)
尝试使用Python继承。继承B类中的A类。
"projects": {
"ui": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/polyfills.ts",
"assets": [
"src/assets",
"./../public/images/favicon.png"
],
"styles": [
"src/styles.css",
"./../public/stylesheets/common/css-reset.css",
"./../public/stylesheets/common/common-styles.css",
"./../public/stylesheets/common/vendor/bootstrap/bootstrap.css"
],
"scripts": [
"./../public/javascripts/common/vendor/jquery/jquery-3.2.1.js",
"./../public/javascripts/common/vendor/bootstrap/bootstrap.js"
]
},
这应该对您有用。