Python:从字典调用 类 时遇到问题
Python: Having trouble calling classes from dicts
我是面向对象编程的新手,当我 运行 撞墙时,我正在 Python 使用字典中的 classes 玩耍。
我创建了父子 classes,并将子 classes 插入到另一个 class 的字典中 dictionary
:
class zero(object):
def __init__(self):
print('This is some text')
class one(zero):
def execute(self):
print(0+1)
class two(zero):
def execute(self):
print(0+2)
class three(zero):
def execute(self):
print(0+3)
class dictionary(object):
numbers = {
1: one(),
2: two(),
3: three()
}
dictionary.numbers[3].execute()
当我这样做时,程序在继续执行最后一行的命令之前立即打印出子 classes 的 __init__。
我不确定为什么会这样,因为我只希望最后一行产生输出。我做错了什么?
没什么问题。这里:
{
1: one(),
2: two(),
3: three()
}
()
字面上调用,例如,one.__init__()
(在使用 one.__new__()
创建对象之后)。这对所有三个对象都完成了。
无论如何,无论何时使用 SomeClass(some, arguments)
实例化 class' 实例,您都在调用 class' __init__
方法。
class 的 __init__
方法称为 'constructor' 并在从 class 创建对象时执行(例如,您经常会查看创建对象时传递给 class 的变量,__init__
方法将用于接受变量并用它们的值填充内部 class 变量。
classes one
、two
和 three
都是 class(或继承)自 class zero
-- 您可以看到所有三个 class 定义都在定义 class 名称的行中包含对 zero
的引用,例如 def one(zero):
-- 所以它们全部自动从 zero
class.
继承 __init__
方法
因此,当您将 one()
、two()
和 three()
分配给 dictionary
class 中的数字 dict
时,它们本质上都是从 zero
执行构造函数 __init__
方法,其中包含打印文本的语句,然后显式调用数字 [=23] 中第三个元素的 execute
方法=] 在 dictionary
.
我是面向对象编程的新手,当我 运行 撞墙时,我正在 Python 使用字典中的 classes 玩耍。
我创建了父子 classes,并将子 classes 插入到另一个 class 的字典中 dictionary
:
class zero(object):
def __init__(self):
print('This is some text')
class one(zero):
def execute(self):
print(0+1)
class two(zero):
def execute(self):
print(0+2)
class three(zero):
def execute(self):
print(0+3)
class dictionary(object):
numbers = {
1: one(),
2: two(),
3: three()
}
dictionary.numbers[3].execute()
当我这样做时,程序在继续执行最后一行的命令之前立即打印出子 classes 的 __init__。
我不确定为什么会这样,因为我只希望最后一行产生输出。我做错了什么?
没什么问题。这里:
{
1: one(),
2: two(),
3: three()
}
()
字面上调用,例如,one.__init__()
(在使用 one.__new__()
创建对象之后)。这对所有三个对象都完成了。
无论如何,无论何时使用 SomeClass(some, arguments)
实例化 class' 实例,您都在调用 class' __init__
方法。
class 的 __init__
方法称为 'constructor' 并在从 class 创建对象时执行(例如,您经常会查看创建对象时传递给 class 的变量,__init__
方法将用于接受变量并用它们的值填充内部 class 变量。
classes one
、two
和 three
都是 class(或继承)自 class zero
-- 您可以看到所有三个 class 定义都在定义 class 名称的行中包含对 zero
的引用,例如 def one(zero):
-- 所以它们全部自动从 zero
class.
__init__
方法
因此,当您将 one()
、two()
和 three()
分配给 dictionary
class 中的数字 dict
时,它们本质上都是从 zero
执行构造函数 __init__
方法,其中包含打印文本的语句,然后显式调用数字 [=23] 中第三个元素的 execute
方法=] 在 dictionary
.