Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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:在实例方法中一般地引用类?_Python_Syntax_Programming Languages - Fatal编程技术网

Python:在实例方法中一般地引用类?

Python:在实例方法中一般地引用类?,python,syntax,programming-languages,Python,Syntax,Programming Languages,此问题类似,但与静态方法有关: 如何在实例方法中泛指类 e、 g 新样式类具有self.\u class\u属性 在兼容3.x的Python中,所有类都是新样式的 在3.x之前,使用类AOObject:将其声明为新样式。新样式类具有self.\u class\u属性 在兼容3.x的Python中,所有类都是新样式的 在3.x之前,使用类AOObject:将其声明为新样式。对于旧样式的类,如果您的代码是Python2.x代码,并且您的类不继承自对象,请使用 对于新样式的类,如果您的代码是Pytho

此问题类似,但与静态方法有关:

如何在实例方法中泛指类

e、 g


新样式类具有self.\u class\u属性

在兼容3.x的Python中,所有类都是新样式的


在3.x之前,使用类AOObject:将其声明为新样式。

新样式类具有self.\u class\u属性

在兼容3.x的Python中,所有类都是新样式的

在3.x之前,使用类AOObject:将其声明为新样式。

对于旧样式的类,如果您的代码是Python2.x代码,并且您的类不继承自对象,请使用

对于新样式的类,如果您的代码是Python 3代码,请使用:

在内部,type使用属性。

对于旧式类,如果您的代码是Python2.x代码,并且您的类不从对象继承,请使用

对于新样式的类,如果您的代码是Python 3代码,请使用:


在内部,type使用该属性。

不从object继承的pre 3.x如何?@pokstad旧式类具有相同的可用属性。有关详细信息,请参阅我的答案。我不知道为什么它当前被选为-1。如果不从object继承,3.x之前的版本会怎么样?@pokstad Old style classes具有相同的可用属性。有关详细信息,请参阅我的答案,我不知道为什么它现在被选为-1。我假设这是Python 3代码,在他们的头脑中,他们会选择使用旧式类?。更新了python 2的解释。如果您想同时支持旧样式类和新样式类,请使用_uclass_uu.+1验证这在不从2.7上的对象继承时是否正确。为什么有人更喜欢使用类型而不是类?@pokstad:它没有太多的下划线:D而且,对象可能会做一些愚蠢的事情并覆盖类,但它不能愚弄类型。@pokstad\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,它们可以随着时间的推移而改变。例如,一个高级解释器,例如,当它可以静态或动态地确定该值为常量时,甚至可能不存储该类。相比之下,type是一个有很好文档记录的函数,它永远不会消失。@lunixbochs对不起,您指的是哪个示例?对我来说,Python2.4、2.5、2.6和2.7版本的作品。从:如果x是一个旧式类的实例,那么x.uuuu class_uuuuu指定了x的类。我假设这是Python 3代码,在他们的头脑中,谁会选择使用旧式类?。更新了python 2的解释。如果您想同时支持旧样式类和新样式类,请使用_uclass_uu.+1验证这在不从2.7上的对象继承时是否正确。为什么有人更喜欢使用类型而不是类?@pokstad:它没有太多的下划线:D而且,对象可能会做一些愚蠢的事情并覆盖类,但它不能愚弄类型。@pokstad\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,它们可以随着时间的推移而改变。例如,一个高级解释器,例如,当它可以静态或动态地确定该值为常量时,甚至可能不存储该类。相比之下,type是一个有很好文档记录的函数,它永远不会消失。@lunixbochs对不起,您指的是哪个示例?对我来说,Python2.4、2.5、2.6和2.7版本的作品。从:如果x是一个旧式类的实例,那么x.uuuu class_uuuuu指定x的类。
#!/usr/bin/python
class a:
    b = 'c'
    def __init__(self):
        print(a.b) # <--- not generic because you explicitly refer to 'a'

    @classmethod
    def instance_method(cls):
        print(cls.b) # <--- generic, but not an instance method
def __init__(self):
    print(self.__class__.b) # Python 2.x and old-style class
def __init__(self):
    print(self.__class__.b) # __class__ works for a new-style class, too
    print(type(self).b)