我有一个类有一个classmethod和一个实例方法.. classmethod创建一个类变量cls.name。
我想知道如何在我的实例方法中访问类变量cls.name - parent_method。
ng-bind-html="data.text"
答案 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__
继承实例类的字典中的等等。