python类的__init__方法

无国籍

我有一个名为 settings 的 python 类,它包括一个__init__用于设置一些值方法,如下所示:

class settings:
    global appkey
    global appversion
    def __init__(self):
        appkey = 1
        appversion = 1
        applicationname = "app1"
        applicationfile = "app.txt"

在另一个 python 文件(主脚本)中,我通过以下代码定义了我的设置类的一个实例:

import settings
from settings import settings
set = settings()
print set.appversion
print set.appkey
print set.applicationfile

但是当我运行我的主要 python 脚本时,我收到了这个错误:

AttributeError: settings instance has no attribute 'appversion'

我希望当我定义一个类的实例时,这里的设置类,它的init函数将被触发,我将拥有它的属性值。

摩西·科莱多耶

变量是__init__您的类的局部变量要将它们作为实例属性,您需要使用对实例的点引用将它们绑定到实例:

def __init__(self):
    self.appkey = 1
    ...

使用以下命令将属性绑定到实例上的/设置属性的同义词(但不那么冗长)setattr

def __init__(self):
    setattr(self, 'appkey', 1)
    ...

另一方面,您不需要该global语句,因为您只想在实例上设置新属性;与全局命名空间无关。

您可以__init__通过分析字节码轻松检查新的行为与以前的不同:

from dis import dis

class Settings(object):
   def __init__(self):
       self.appkey = 1  

dis(Settings.__init__)

3           0 LOAD_CONST               1 (1)
            2 LOAD_FAST                0 (self)
            4 STORE_ATTR               0 (appkey)
            6 LOAD_CONST               0 (None)
            8 RETURN_VALUE

请注意,我们不像普通 STORE_FAST赋值那样调用流行而是调用STORE_ATTR.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python类__init__确认

来自分类Dev

Python:类中的 __init__

来自分类Dev

类作为python __init__中的参数

来自分类Dev

python类的属性不在__init__中

来自分类Dev

Python:从__init__函数中调用类变量和类方法

来自分类Dev

在Python中动态创建类后如何调用父类的__init__方法?

来自分类Dev

为什么继承了“对象”的python类在其__init__方法中将其称为“超级”?

来自分类Dev

Python oop:类的__init__方法通常具有琐碎的分配self.value = value

来自分类Dev

Python:如何使用类方法在__init__函数中定义变量?

来自分类Dev

在Python中复制基类'__init__'签名的正确方法是什么?

来自分类Dev

使用python中父类的魔术方法__init__初始化子类

来自分类Dev

如何继承在python 3中类的__init__方法中定义的变量

来自分类Dev

Python中的__init__自动运行方法

来自分类Dev

在 Python 中的 __init__() 中添加方法

来自分类常见问题

如何从子类调用基类的__init__方法?

来自分类Dev

__init__是一个类方法吗?

来自分类Dev

调用超类的__init__方法时发生TypeError

来自分类Dev

如何在类的__init__方法中修补实例?

来自分类Dev

调用超类的__init__方法时发生TypeError

来自分类Dev

从 __init__() 开始 multiprocessing.Process 类中的方法

来自分类Dev

在Python 3中扩展类并使用__init__构造它

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

Python:将参数冻结到类__init__函数中

来自分类Dev

Python中的类是否需要__init__构造函数?

来自分类Dev

在某些类的python中的__init__ def中获取变量

来自分类Dev

杀死在Python的__init__类中创建的子进程

来自分类Dev

Python中的类是否需要__init__构造函数?

来自分类Dev

带有 __init__ 函数的 Python 类多重继承

来自分类Dev

Python:父类无法识别其子类的 __init__

Related 相关文章

  1. 1

    Python类__init__确认

  2. 2

    Python:类中的 __init__

  3. 3

    类作为python __init__中的参数

  4. 4

    python类的属性不在__init__中

  5. 5

    Python:从__init__函数中调用类变量和类方法

  6. 6

    在Python中动态创建类后如何调用父类的__init__方法?

  7. 7

    为什么继承了“对象”的python类在其__init__方法中将其称为“超级”?

  8. 8

    Python oop:类的__init__方法通常具有琐碎的分配self.value = value

  9. 9

    Python:如何使用类方法在__init__函数中定义变量?

  10. 10

    在Python中复制基类'__init__'签名的正确方法是什么?

  11. 11

    使用python中父类的魔术方法__init__初始化子类

  12. 12

    如何继承在python 3中类的__init__方法中定义的变量

  13. 13

    Python中的__init__自动运行方法

  14. 14

    在 Python 中的 __init__() 中添加方法

  15. 15

    如何从子类调用基类的__init__方法?

  16. 16

    __init__是一个类方法吗?

  17. 17

    调用超类的__init__方法时发生TypeError

  18. 18

    如何在类的__init__方法中修补实例?

  19. 19

    调用超类的__init__方法时发生TypeError

  20. 20

    从 __init__() 开始 multiprocessing.Process 类中的方法

  21. 21

    在Python 3中扩展类并使用__init__构造它

  22. 22

    杀死在Python的__init__类中创建的子进程

  23. 23

    Python:将参数冻结到类__init__函数中

  24. 24

    Python中的类是否需要__init__构造函数?

  25. 25

    在某些类的python中的__init__ def中获取变量

  26. 26

    杀死在Python的__init__类中创建的子进程

  27. 27

    Python中的类是否需要__init__构造函数?

  28. 28

    带有 __init__ 函数的 Python 类多重继承

  29. 29

    Python:父类无法识别其子类的 __init__

热门标签

归档