Python 构造函数

Python 构造函数

在Python中,每个类都有一个构造函数,它是在类内部指定的特殊方法。当创建一个新对象时,构造函数/初始化函数会自动调用。当对象被初始化时,构造函数会给类内的数据成员赋值。

不需要显式定义构造函数。但是为了创建一个构造函数,我们需要遵循以下规则:

  • 一个类只允许一个构造函数。

  • 构造函数的名称必须是init

  • 构造函数必须使用实例属性定义(即将self关键字作为第一个参数)。

  • 除了返回None之外,构造函数不能返回任何值。

语法

class A(): 
   def __init__(self):
      pass

示例

考虑以下示例并理解构造函数的工作原理。

class SampleClass():
  def __init__(self):
    print("it a sample class constructor")

# creating an object of the class 
A = SampleClass()

输出

it a sample class constructor

在上面的代码块中,对象A是为SampleClass()创建的,对于这个实例,方法init(self)会自动执行。所以它显示了来自构造函数的语句。

构造函数有三种类型。

  • 默认构造函数

  • 带参数的构造函数

  • 无参数的构造函数

默认构造函数

默认构造函数不由用户定义,Python会在程序编译时自动生成一个构造函数。它不执行任何任务,只是对对象进行初始化。

示例

Python生成一个空的构造函数,里面没有任何代码。请参见下面的示例。

class A():
    check_value = 1000
    # a method
    def value(self):
        print(self.check_value)

# creating an object of the class
obj = A()

# calling the instance method using the object
obj.value()

输出

1000

使用Python内置的dir()函数来验证类A的构造函数。

dir(A)
Output:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', 
'__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', '__weakref__', 'check_value', 'value']

python dir() 函数返回指定对象的所有属性和方法的列表。在上面的列表中,我们可以看到为对象A创建了默认构造函数init

带参数的构造函数

参数化构造函数需要一个或多个参数以及self。当您希望为对象的属性创建具有自定义值的对象时,它非常有用。参数化构造函数允许我们在创建对象时指定对象的属性的值。

示例

让我们来看一个带有参数化构造函数的类的示例。

class Family:
   members = 10
   def __init__(self, count):
      self.members = count

   def disply(self):
      print("Number of members is", self.members)  

joy_family = Family(25)
joy_family.disply()

输出

Number of members is 25

而不是使用默认的members属性值10,这里创建了一个名为joy family的对象,其自定义值为25。并且这个值可以在该实例中被使用,因为它被赋值给了self.members属性。

非参数化构造函数

非参数化构造函数除了self以外不接受任何参数。当您想要操作实例属性的值时,它非常有用。

示例

让我们看一个非参数化构造函数的示例。

class Player:
   def __init__(self):
      self.position = 0

   # Add a move() method with steps parameter     
   def move(self, steps):
      self.position = steps
      print(self.position)

   def result(self):
      print(self.position)

player1 = Player()
print('player1 results')
player1.move(2)
player1.result()

print('p2 results')
p2 = Player()
p2.result()

输出

player1 results
2
2
p2 results
0

player1对象通过使用move()方法来操作“position”属性。而p2对象访问了“position”属性的默认值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程