Create instance of class in another class (with generic example)(在另一个类中创建类的实例(使用泛型示例))
本文介绍了在另一个类中创建类的实例(使用泛型示例)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在通过书本和互联网学习Python,但我被一个类问题困住了。
2个问题:
- 如何在另一个(单独)类中创建一个类的实例?
- 如何在类和嵌套(?)之间传递变量类?
当我试图在另一个(单独的)类中创建一个类的实例时,我能够在一个方法中完成。代码如下:
import os
class FOO():
def __init__(self):
self.values = [2, 4, 6, 8]
def do_something(self, x, y):
os.system("clear")
z = self.values[x] * self.values[y]
print "%r * %r = %r" % (self.values[x], self.values[y], z)
class BAR():
def __init__(self):
pass
def something_else(self, a, b):
foo1 = FOO()
foo1.do_something(a, b)
bar = BAR()
bar.something_else(1, 2)
但是,这是否允许我访问Foo类及其在其他BAR方法中的信息?如果是,如何?
我尝试了以下操作,但遇到错误:
import os
class FOO():
def __init__(self):
self.values = [2, 4, 6, 8]
def do_something(self, x, y):
os.system("clear")
z = self.values[x] * self.values[y]
print "%r * %r = %r" % (self.values[x], self.values[y], z)
class BAR():
def __init__(self):
foo1 = FOO()
def something_else(self, a, b):
foo1.do_something(a, b)
bar = BAR()
bar.something_else(1, 2)
以下是错误:
Traceback (most recent call last):
File "cwic.py", line 22, in <module>
bar.something_else(1, 2)
File "cwic.py", line 19, in something_else
foo1.do_something(a, b)
NameError: global name 'foo1' is not defined
我在使用以下命令时收到相同的错误:
def __init__(self):
self.foo1 = FOO()
另外,我应该如何将‘Value’从一个类传递到另一个类?
如果我的常规方法和/或语法有误,请告诉我。
推荐答案
实例或类的所有属性都是通过self访问的,self作为第一个参数传递给所有方法。这就是为什么您正确地获得了方法签名something_else(self, a, b),而不是像使用其他语言那样只获得something_else(a, b)。因此,您正在寻找:
class BAR():
def __init__(self):
self.foo1 = FOO()
def something_else(self, a, b):
self.foo1.do_something(a, b)
请注意,self不是一个关键字,它只是一个参数名称,如a和b,因此,如果您来自Java背景,则可能会使用this。但别这样!为此使用self有很强的惯例,如果您使用其他任何东西,您会让很多人(最终包括您自己)非常生气!
关于传递值,我不知道您的意思是什么,您可以通过foo1.an_attribute这样的实例访问它们,或者像function(arg)那样将它们作为参数传递给函数,但您似乎在示例中同时使用了这两种技术,所以我不确定您还想要什么...
编辑
作为对@dwstein的评论的回应,我不确定它是如何在VB中完成的,但这里介绍了如何在创建类的实例时传递参数。
如果我们查看您的课程:
class BAR():
def __init__(self):
self.foo1 = FOO()
我们可以通过将第二行更改为def __init__(self, baz):将其更改为接受参数Baz,然后如果需要,可以通过设置self.baz = baz使baz成为BAR的新实例的属性。希望这能有所帮助。
这篇关于在另一个类中创建类的实例(使用泛型示例)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:在另一个类中创建类的实例(使用泛型示例)
基础教程推荐
猜你喜欢
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
