[英]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 中也被视为空格?
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
对象的初始化实例进行操作。
123
"test"
[1, 2]
这些都没有任何作用,但鉴于它们在技术上是有效的语句,因此不会导致错误。 您会经常在文档字符串中看到这种类型的语句,例如:
"""
Long string goes here.
"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.