Python 构造函数

Python 构造函数

在面向对象编程中,类的一个对象通过一个或多个实例变量或属性来进行特征化,其值对每个对象是唯一的。例如,如果Employee类有一个名为name的实例属性。它的每个对象e1和e2可能对name变量具有不同的值。

构造函数是类中的一个实例方法,在声明类的新对象时自动调用。构造函数的作用是在对象声明时为实例变量赋值。

Python使用一个特殊的方法__init__()来初始化对象的实例变量,一旦对象被声明就会调用它。

__init__()方法充当构造函数。它需要一个强制参数self,它是指向对象的引用。

def __init__(self):
#initialize instance variables

__init__()方法以及类中的任何实例方法都有一个必需参数, self 。但是,你可以给第一个参数任何名称,不一定是self。

让我们在Employee类中定义构造函数来初始化name和age作为实例变量。然后我们可以访问其对象的这些属性。

示例

class Employee:
   'Common base class for all employees'
   def __init__(self):
      self.name = "Bhavana"
      self.age = 24

e1 = Employee()
print ("Name: {}".format(e1.name))
print ("age: {}".format(e1.age))

它将产生以下内容 输出

Name: Bhavana
age: 24

带参数的构造函数

对于上面的Employee类,我们声明的每个对象都会有相同的实例变量name和age的值。如果要声明具有不同属性而不是默认属性的对象,请为__init__()方法定义参数。(方法就是定义在类内部的函数。)

示例

在这个例子中,init()构造函数有两个形式参数。我们使用不同的值来声明Employee对象 −

class Employee:
   'Common base class for all employees'
   def __init__(self, name, age):
      self.name = name
      self.age = age

e1 = Employee("Bhavana", 24)
e2 = Employee("Bharat", 25)

print ("Name: {}".format(e1.name))
print ("age: {}".format(e1.age))
print ("Name: {}".format(e2.name))
print ("age: {}".format(e2.age))

它将产生以下 输出

Name: Bhavana
age: 24
Name: Bharat
age: 25

您可以在构造函数中为形参指定默认值,这样对象可以在传递参数或不传递参数的情况下实例化。

class Employee:
   'Common base class for all employees'
   def __init__(self, name="Bhavana", age=24):
      self.name = name
      self.age = age

e1 = Employee()
e2 = Employee("Bharat", 25)

print ("Name: {}".format(e1.name))
print ("age: {}".format(e1.age))
print ("Name: {}".format(e2.name))
print ("age: {}".format(e2.age))

它将产生以下 输出

Name: Bhavana
age: 24
Name: Bharat
age: 25

Python – 实例方法

除了init()构造函数之外,类中还可以定义一个或多个实例方法。带有self作为形式参数的方法被称为实例方法,因为它是由特定对象调用的。

示例

在以下示例中,定义了一个displayEmployee()方法。它返回调用该方法的Employee对象的姓名和年龄属性。

class Employee:
   def __init__(self, name="Bhavana", age=24):
      self.name = name
      self.age = age
   def displayEmployee(self):
      print ("Name : ", self.name, ", age: ", self.age)

e1 = Employee()
e2 = Employee("Bharat", 25)

e1.displayEmployee()
e2.displayEmployee()

它将产生以下 输出

Name : Bhavana , age: 24
Name : Bharat , age: 25

您可以随时添加、删除或修改类和对象的属性 −

emp1.salary = 7000 # Add a 'salary' attribute.
emp1.name = 'xyz' # Modify 'name' attribute.
del emp1.salary # Delete 'salary' attribute.

不使用常规语句访问属性,可以使用以下函数:

  • getattr(obj, name[, default]) - 访问对象的属性。

  • hasattr(obj, name) - 检查属性是否存在。

  • setattr(obj, name, value) - 设置属性。如果属性不存在,则创建。

  • delattr(obj, name) - 删除属性。

print (hasattr(e1, 'salary')) # Returns true if 'salary' attribute exists
print (getattr(e1, 'name')) # Returns value of 'name' attribute
setattr(e1, 'salary', 7000) # Set attribute 'salary' at 8
delattr(e1, 'age') # Delete attribute 'age'

它将产生以下 输出

False
Bhavana

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程