在实例方法中访问类方法vairable

时间:2015-08-07 14:37:13

标签: python

我有一个类有一个classmethod和一个实例方法.. classmethod创建一个类变量cls.name。

我想知道如何在我的实例方法中访问类变量cls.name - parent_method。

ng-bind-html="data.text"

2 个答案:

答案 0 :(得分:0)

您需要调用该类方法才能使名称成立。

顺便说一下,既然你使用的是Python 2,那么你应该从object明确地派生出你的类,否则就得到old-style classes

这是一个快速演示(在Python 2.6.6上运行)

class Parent(object):
    def __init__(self):
        print "Parent initialized"

    @classmethod
    def resource_setup(cls):
        cls.name = "P"
        print "parent method"

    def parent_method(self):
        print self.name

Parent.resource_setup()
a = Parent()
a.parent_method()
print a.name

<强>输出

parent method
Parent initialized
P
P

请注意,您不需要通过.resource_setup()调用Parent,您也可以使用实例来执行此操作,但我认为调用类方法更明确使用类名。下面的代码使用与上面相同的类定义,因此我不再重复。

a = Parent()
a.resource_setup()
a.parent_method()

b = Parent()
b.parent_method()

<强>输出

Parent initialized
parent method
P
Parent initialized
P

答案 1 :(得分:0)

在类方法中初始化后,可以从实例访问类变量。

p = Parent()
p.resource_setup()
p.parent_method()

类和实例变量位于不同的名称空间中。当您调用属性时,第一个查找位于实例字典

p.__dict__

下一节课词典

p.__class__.__dict__
继承实例类的字典中的

等等。