Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用.self从另一个类调用变量_Python - Fatal编程技术网

Python 使用.self从另一个类调用变量

Python 使用.self从另一个类调用变量,python,Python,我有以下代码: class A(object): const1 = 100 const2 = 200 class Example(object): def __init__(self, a, b): self.a = a self.b = b self.const = A() def add(self): return self.a + self.b + self.const.const2 我的问题是为什么它是这样写的:self.con

我有以下代码:

class A(object):
  const1 = 100
  const2 = 200

class Example(object):

  def __init__(self, a, b):
    self.a = a
    self.b = b
    self.const = A() 

  def add(self):
    return self.a + self.b + self.const.const2 

我的问题是为什么它是这样写的:
self.const=A()
?。换句话说,我们在这里想要实现什么

您正在将示例类对象内的变量设置为类对象。它将允许您参考以下内容:

self.const.const1
或者,若您创建了一个示例类对象,您可以执行以下操作来访问类对象内部的变量

exam_obj = Example(1, 2)
exam_obj.const.const2

示例
的属性
const
被分配一个类
A
的实例。由于该属性是类
A
的实例,因此它有其各自的属性:
const1
const2
。在这里,他们可能试图向你展示你可以用类做这些事情。

我们正在创建一个
A
的实例,并将其作为
self
的属性(一个
Example
的实例),如果我说“我们正在创建一个
A
的实例,并将其作为我们想要创建的对象的属性”,这是一个正确的说法吗?@far.western是的,这将是正确的术语。“在这里,他们可能试图向你展示,你可以用类做这些事情。”-这是正确的,也是正确的观点。但依我看,他们试图证明Python允许您拥有多个唯一的名称空间,并且可以将它们嵌套在一起。@elena:我们将属性的名称作为类
示例
\uuu init\uuu
函数的参数。如果
A()
const
成为一个属性,那么我们为什么不把它放在
\uuuu init\uuuu
函数的括号内?@far.western
\uu init\uuu
将可能影响/修改属性值的内容作为参数。属性
const
只是类
A
的一个实例。因此,您不需要为
\uuuuu init\uuuuu
提供参数来初始化它。@elena:我为过于挑剔而道歉:我们不应该说-
\uuuuu init\uuuuu
将可能影响/修改我们想要创建的对象的值的东西作为参数。@far.western这两种说法都是正确的。我们将一些参数传递给
\uuuu init\uuuu
,以影响对象的属性,即影响对象的值(值==属性)。当然,这取决于你所说的价值观。