Python 内部类定义一直要求进行自论证

Python 内部类定义一直要求进行自论证,python,python-3.x,class,Python,Python 3.x,Class,大家好,祝你们身体健康 我在尝试将self变量用于innerclass时遇到一些问题,但是outerclass工作正常 #Assume this file is named classes.py class outerclass(): def __init__(self): self.ina = 10 self.inb = 20 self.inc = 30 class innerclass(object): def defined(s

大家好,祝你们身体健康

我在尝试将
self
变量用于
innerclass
时遇到一些问题,但是
outerclass
工作正常

#Assume this file is named classes.py
class outerclass():
   def __init__(self):
      self.ina = 10 
      self.inb = 20
      self.inc = 30
   class innerclass(object):
      def defined(self):
         self.vara = 40
         self.varb = 50
我这样称呼这个班

import classes
test = classes.outerclass()
test.innerclass.defined()
输出:

Traceback (most recent call last):
  File "<pyshell#501>", line 1, in <module>
    test.innerclass.defined()
TypeError: defined() missing 1 required positional argument: 'self'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
test.innerclass.defined()
TypeError:defined()缺少1个必需的位置参数:“self”

有人能帮我吗?我一直在想办法解决这个问题。

这不是关于阶级内部的问题。
define
函数是一种方法,您应该将其用于非静态的实例

下面的代码工作正常。因为,我们在一个实例上调用了define

test.innerclass().defined()
test.innerclass()
test.innerclass
类创建一个实例


根据您想要获得的注释
vara
varb

试试这个

obj=test.innerclass()
obj.defined()
打印(obj.vara,obj.varb)

“defined”是必须在实例上调用的实例方法,“innerclass”是一个类。这与“innerclass”在另一个类中没有任何关系。在某个时候,如果需要该类的实例,您需要调用
innerclass()
。我不确定您需要什么mean@LaithStriegher“我不确定你2的意思”=>那么你首先必须理解类和实例之间的区别。。。这可能是一个很好的起点。我输入的代码是一个真正的代码示例,其中包含smbus模块的函数。您在帖子中输入的错误是,您应该调用
define
方法来定义
innerclass
的实例。这不是一个静态方法。你能给我一个例子吗>>>test.innerclass().vara回溯(最近一次调用):test.innerclass()中的文件“”,第1行。vara AttributeError:“innerclass”对象没有属性“vara”
innerclass
有名为
vara
的字段或方法吗?