繁体   English   中英

Python 类变量的范围?

[英]Python Class Variables' scope?

我正在学习 Python(我的背景是 C、C++)。

在 tutorialspoint.com 的以下代码中:

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

(1) 我的困惑在于实例变量 'self.name', self.salary'。 我知道 Python 中的变量不需要与 C 不同的显式声明,但是如何在方法“displayEmployee”中使用这些变量,它们是否有自己的局部作用域,即构造函数方法“_ init _” ? 此外,这个“self”变量是正在创建的类的对象 - 所以这意味着在 Python 中声明一个类也会同时创建该类的对象(所以没有像 C++ 中的虚拟类)?

(2) 我的第二个(不太重要的)问题是在上面的代码中,为什么随机放置的字符串“这将创建 Employee 类的第一个对象”和“这将创建 Employee 类的第二个对象”,不显示错误? 据我所知,注释必须以 # 或 ''' 开头? 还是字符串在 Python 中也被视为空格?

  1. 创建对象(即Emplyee()调用__init__()方法,即初始化程序)。 然后所有具有self参数的方法都采用该对象的实例进行操作。 这意味着这些方法将可以访问该对象的self变量。 这意味着静态方法无法访问 this,以及为什么访问这些实例变量不会出错。 例如,这会出错:
class Employee:
    def __init__(self):
        self.variable = 123

    @staticmethod # Decorator to indicate this method should not accept 'self'
    def static_method():
        print(self.variable)

因为方法static_method()不对Employee对象的初始化实例进行操作。

  1. 字符串,就像任何其他未分配的变量一样,将被解释然后丢弃。 像下面这样:
123
"test"
[1, 2]

这些都没有任何作用,但鉴于它们在技术上是有效的语句,因此不会导致错误。 您会经常在文档字符串中看到这种类型的语句,例如:

"""
Long string goes here.
"""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM