将类的实例(类的对象)传递给另一个类

2024-05-19

我不明白的是b = Bar(a)。它有什么作用?怎么Bar taking a作为一个论点?

那岂不是意味着Bar继承自a?什么是Bar.Foo1 = Foo?是不是意味着Foo1是类的一个实例Foo()?我们如何访问Foo1当它本身是一个对象时?是什么意思b.arg.variable?是不是意味着b有一个方法arg其中有一个名为variable?以下代码来自这个答案 https://stackoverflow.com/a/11421962/3519372

我只是找不到解析对象作为另一个类的参数。

  class Foo (object):
  #^class name  #^ inherits from object

      bar = "Bar" #Class attribute.

      def __init__(self):
          #        #^ The first variable is the class instance in methods.  
          #        #  This is called "self" by convention, but could be any name you want.
       

          self.variable="Foo" #instance attribute.
          print self.variable, self.bar  #<---self.bar references class attribute
          self.bar = " Bar is now Baz"   #<---self.bar is now an instance attribute
          print self.variable, self.bar  

       def method(self,arg1,arg2):
          #This method has arguments. You would call it like this : instance.method(1,2)
          print "in method (args):",arg1,arg2
          print "in method (attributes):", self.variable, self.bar


 a=Foo() # this calls __init__ (indirectly), output:
             # Foo bar
             # Foo  Bar is now Baz
 print a.variable # Foo
 a.variable="bar"
 a.method(1,2) # output:
               # in method (args): 1 2
               # in method (attributes): bar Bar is now Baz
 Foo.method(a,1,2) #<--- Same as a.method(1,2).  This makes it a little more explicit what the argument "self" actually is.

 class Bar(object):
     def __init__(self,arg):
          self.arg=arg
          self.Foo1=Foo()

 b=Bar(a)
 b.arg.variable="something"
 print a.variable # something
 print b.Foo1.variable # Foo

“我不明白 b = Bar(a)。它有什么作用?”

b = Bar(a)做两件事。首先,它创建一个类的对象Bar(附加任何类变量和方法)。然后,它运行__init__与第一个参数 (self) 指向刚刚创建的对象,并且a作为第二个参数(arg)。在跑步的时候__init__,作为该方法中的命令之一,它设置self.arg指向由 指向的对象arg(即变量指向的对象a)。最后,变量b设置为引用已创建的对象。

这样思考可能会有所帮助:Python 中的变量实际上只是一个指向对象的指针。您可以有多个变量指向同一对象。在这种情况下,a and b.arg两者都指向同一个对象。

起初我也发现这种事情很令人困惑。我曾看到过将变量视为与它们所指向的对象不同的概念的建议,并忽略了它,因为它使事情不必要地复杂化,但我必须重新接受这种思维方式才能理解事物。人们确实经常使用变量作为名称来引用它所指向的对象;你只需要知道什么时候该从字面上理解这一点。

“这是否意味着Bar继承了a?”

No. If a是一个类,那么class Bar(a)意味着 Bar 继承自a。但在b = Bar(a), a是一个作为参数传递给的对象__init__.

“什么是 Bar.Foo1 = Foo?”

抱歉 - 我在您提供的示例代码中没有看到这一点。

“b.arg.variable 的含义是什么?”

b是一个对象(我的意思是,b指的是一个对象)和b.arg是该对象的属性之一。方法和变量是不同类型的属性。在这种情况下,b.arg是一个指向对象的变量。所引用的对象b.arg有属性variable,这是一个变量。

b.arg指的是同一个对象a指的是,因此b.arg.variable与以下变量相同a.variable。它不仅指向同一个对象,而且实际上是同一个变量。它指向的对象是字符串"something".

@Brenbarn:我认为这就是 quirius 所说的“这不意味着 Bar 继承自 a 吗?”的意思。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将类的实例(类的对象)传递给另一个类 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

    我在使用 UTF 8 字符时遇到一些问题 这是 db seeds rb User create username eml first name last name ck email email protected cdn cgi l ema
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • 如何创建 HIVE 表来读取分号分隔值

    我想创建一个 HIVE 表 该表将以分号分隔的值读取 但我的代码不断给出错误 有没有人有什么建议 CREATE TABLE test details Time STRING Vital STRING sID STRING PARTITION
  • C++ - 使用枚举生成一副牌

    我刚刚开始学习C 对头文件和类结构的概念仍然很陌生 我学习Java已经有2年了 C 语法和一些操作有不同的行为 我正在尝试制作一副纸牌 为了使代码更清晰 我想对卡片的花色和值使用枚举 然而 Deck 类中的问题是我有一种方法可以使用以下方法
  • “没有名为‘cv2’的模块”,但已安装

    我已经安装了包含 opencv 贡献的 whl 文件 因为我想使用 SIFT 算法 我在 conda 环境中使用 pip 安装了它 所以当我在 conda list 中提示时 它会向我显示 opencv python 3 4 5 contr
  • 如何使用 Pygame 将捕获的图像保存到磁盘

    这是我的代码 它启动网络摄像头 import pygame camera import pygame image import sys pygame camera init cameras pygame camera list camera
  • 当 mstest 成功运行并且所有测试通过时,为什么 PartCover 报告显示 0%

    我正在尝试通过 mstest 测试获得代码覆盖率 我正在使用 PartCover 2 2 0 36424 问题在于真实的程序集 我得到 0 的代码覆盖率 注意 所有测试都通过 在我创建的演示源的演示测试中 它运行良好 报告很有意义 我注意到
  • 如果总和为 0,则查找并删除带标题的最后一列

    我想创建一个宏 查找带有标题的最后一列 并仅当该列的总和等于零时才将其删除 到目前为止 这是我尝试过的 Dim LastCol As Long Dim i As Long With ThisWorkbook Sheets Sheet1 Fo
  • 在 (Liberty) 批处理块步骤中,从该步骤之前发出的数据库查询滚动浏览 ResultSet 时,获取“ResultSet 已关闭”

    我正在从 DB2 表读取数据并将其转储到文件中 我在块侦听器的 beforeChunk 中执行简单的选择查询 并使用步骤上下文将其获取到 itemreader 中 在块中 我将检查点策略设置为 item 将 itemcount 设置为 5
  • Kotlin super.finalize()

    当迁移到Kotlin from Java我遇到了一个问题 我覆盖了Object s finalize method Override protected void finalize throws Throwable stopTimer su
  • DC.js 中的工具提示(D3 库)

    DC js 具有强大的内置功能 可显示每个工具提示文档 https github com dc js dc js blob master web docs api latest md title titleFunction 功能 无论如何
  • Chart.js - 在哪里可以找到应该注册哪些组件?

    我是 Chart js 的新手 看到了 v3 文档 Chart js 3 是可摇树的 因此有必要导入并注册您将要使用的控制器 元素 比例和插件 我想知道在哪里可以找到这些用于注册的东西 例如需要注册什么这个例子 https www char
  • Powershell 将单个字符串与多个正则表达式匹配?

    除了依次迭代每个正则表达式之外 是否有一种更 powershelly 的方式将单个字符串与正则表达式的数组 集合进行匹配 我真正想做的是这样的 database Name match includeRegexArray 考虑到 Powers
  • 如何在Redis中只保存一个数据库?

    我是 Redis 新手 有一个与备份相关的问题 目前 我有一个实例在 Windows 服务器上运行 在这个实例中 我当前有一项 工作 将数据存储在一个数据库中 我不想备份这些数据 我必须创造一份新工作 我的第一个想法是将数据存储在另一个数据
  • 如何在JMeter中实现pacing?

    我在 jMeter 中模拟以下场景 10 个用户 ThreadGroup 正在登录 每个用户 ThreadGroup 应等待 延迟 10 秒才能启动下一个用户 ThreadGroup 我该如何实施 现在我有这样的事情 线程组 10us Ht
  • 将 R (ramda) 导入 typescript .ts 文件

    我正在尝试使用Ramda js如下
  • 如何按多个项目搜索/过滤列表?

    我正在寻找一个示例 或者可能是一个关于通过在文本框中输入的多个项目来过滤 搜索项目列表的方法的一点提示 假设我有一个列表 ul li Coffee li li Tea li li Milk li li Water li li Juice l
  • PHP DOM - 剥离 span 标签,保留其内容

    我希望采用如下标记 span class test Some text that is strong bolded strong and contains a a href link a span 并在 PHP 中找到剥离跨度的最佳方法 剩
  • 按键对 JavaScript 对象进行排序

    我需要按键对 JavaScript 对象进行排序 因此 以下内容 b asdsad c masdas a dsfdsfsdf 会成为 a dsfdsfsdf b asdsad c masdas 这个问题的其他答案已经过时 与实施现实不符 并
  • 将类的实例(类的对象)传递给另一个类

    我不明白的是b Bar a 它有什么作用 怎么Bar taking a作为一个论点 那岂不是意味着Bar继承自a 什么是Bar Foo1 Foo 是不是意味着Foo1是类的一个实例Foo 我们如何访问Foo1当它本身是一个对象时 是什么意思