试图了解python中的self和class级变量

时间:2019-05-31 05:57:46

标签: python-2.7

试图了解如何初始化类中的变量。示例类:

class Emp:
    company = "ABC"

我希望属性公司在Emp的所有实例对象之间共享,我们将能够使用Emp.company来访问它

现在,如果我使用self在Emp类中创建另一个变量,并且具有相同的名称(公司),我希望它与“类级别”公司分开。

我第一次尝试访问self.company时,我期望一个空值(因为未设置任何内容),但是该值被解析为与Emp.company中的值相同,即使以后的测试表明:这些是单独的值。

示例:在init方法中,我们尝试打印self.company并打印Emp.company的值,如果它在类级别存在,这是否提供了默认值,可以在运行时完成?我怀疑这与作用域无关,因为我曾试图从类中删除company并将其放在模块级别,但脚本停止编译。

class Emp:
    company = "CLASS"

    def __init__ (self):
        print Emp.company    # prints CLASS
        print self.company   # prints CLASS
        self.company = "SELF" 


    def change(self, com):
        print Emp.company  # prints CLASS, so that self.company = "SELF" had not effects
        Emp.company = com  
        print Emp.company  # prints CLASS2
        print self.company # prints SELF, clearly the class level and self level variables are different

    def show(self):
        print self.company
        print Emp.company

t = Emp()
t.change("CLASS2")

print "another instance"
t1 = Emp()
print "showing now....."
t1.show()  # call to show that t1 has the same value as Emp.Company

0 个答案:

没有答案