无法访问对象成员变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法访问对象成员变量相关的知识,希望对你有一定的参考价值。
我是python的新手,面临一个奇怪的错误。 我的演示的基本思想是在python中执行“构造函数重载”,类似于其他编程语言。我有两个文件,一个文件只包含类,另一个文件创建类的对象。
employee.朋友
class Employee:
def displayEmployee(self):
print("Name : ", self.emp_name, ", Salary: ", self.salary)
def __init__(self,id=None,salary=None,emp_name=None):
print("Constructing MyClass")
if(id is None):
self.id=101
else:
self.id = id
if(salary is None):
self.salary=20000
else:
self.salary = salary
if(emp_name is None):
self.emp_name="Default"
else:
self.emp_name = emp_name
runner.朋友
from employee import Employee
emp1 = Employee()
emp2 = Employee(1,3000,"Abcd")
emp1.displayEmployee();
emp2.displayEmployee();
但是,现在我面临一个错误
Traceback (most recent call last):
File "runner.py", line 7, in <module>
emp2.displayEmployee();
File "D:pythonDemoemployee.py", line 3, in displayEmployee
print("Name : ", self.emp_name, ", Salary: ", self.salary)
AttributeError: 'Employee' object has no attribute 'emp_name'
这意味着我无法在同一个类的函数中访问该类的任何成员变量。对于其他编程语言,这对我来说非常令人费解。 我做错了什么还是这个设计?
更新:
根据建议,我已将python文件更新为以下内容。但是,我仍然面临同样的错误,下面也给出了相同的错误。
employee.朋友
class Employee:
def displayEmployee(self):
print("Name : ", self.emp_name, ", Salary: ", self.salary)
def __init__(self, id=101, salary=20000, emp_name="Default"):
print("Constructing MyClass")
self.id = id
self.salary = salary
self.emp_name = emp_name
runner.朋友
from employee import Employee
emp1 = Employee()
emp1.displayEmployee();
错误:
Traceback (most recent call last):
File "runner.py", line 6, in <module>
emp1.displayEmployee();
File "D:pythonDemoemployee.py", line 3, in displayEmployee
print("Name : ", self.emp_name, ", Salary: ", self.salary)
AttributeError: 'Employee' object has no attribute 'emp_name'
答案
如果您传递的参数不是None
,则它们永远不会被指定为self
的属性。您可以修改__init__
以简单地提供默认值,然后将它们作为属性分配给您的类
def __init__(self, id=101, salary=20000, emp_name="Default"):
print("Constructing MyClass")
self.id = id
self.salary = salary
self.emp_name = emp_name
以上是关于无法访问对象成员变量的主要内容,如果未能解决你的问题,请参考以下文章