Python构造函数使用详解

本文概述

  • 在python中创建构造函数
  • Python非参数构造函数示例
  • Python参数化构造函数示例
  • Python内置类函数
  • 内置的类属性
构造函数是一种特殊的方法(函数), 用于初始化类的实例成员。
【Python构造函数使用详解】构造函数可以有两种类型。
  1. 参数化构造函数
  2. 非参数构造函数
当我们创建此类的对象时, 将执行构造函数定义。构造函数还验证对象是否有足够的资源来执行任何启动任务。
在python中创建构造函数在python中, 方法__init__模拟类的构造函数。在实例化类时调用此方法。在创建类对象时, 我们可以传递任意数量的参数, 具体取决于__init__的定义。它主要用于初始化类属性。每个类都必须具有构造函数, 即使它仅依赖于默认构造函数也是如此。
考虑以下示例以初始化Employee类属性。
例子
class Employee:def __init__(self, name, id):self.id = id; self.name = name; def display (self):print("ID: %d \nName: %s"%(self.id, self.name))emp1 = Employee("John", 101)emp2 = Employee("David", 102)#accessing display() method to print employee 1 information emp1.display(); #accessing display() method to print employee 2 informationemp2.display();

输出
ID: 101 Name: JohnID: 102 Name: David

示例:计算一个类的对象数
class Student:count = 0def __init__(self):Student.count = Student.count + 1s1=Student()s2=Student()s3=Student()print("The number of students:", Student.count)

输出
The number of students: 3

Python非参数构造函数示例
class Student:# Constructor - non parameterizeddef __init__(self):print("This is non parametrized constructor")def show(self, name):print("Hello", name)student = Student()student.show("John")

输出
This is non parametrized constructorHello John

Python参数化构造函数示例
class Student:# Constructor - parameterizeddef __init__(self, name):print("This is parametrized constructor")self.name = namedef show(self):print("Hello", self.name)student = Student("John")student.show()

输出
This is parametrized constructorHello John

Python内置类函数下表中描述了该类中定义的内置函数。
SN Function Description
1 getattr(obj, name, 默认) 它用于访问对象的属性。
2 setattr(obj, name, value) 它用于为对象的特定属性设置特定值。
3 delattr(obj, 名称) 用于删除特定属性。
4 hasattr(obj, 名称) 如果对象包含某些特定属性, 则返回true。
例子
class Student:def __init__(self, name, id, age):self.name = name; self.id = id; self.age = age#creates the object of the class Students = Student("John", 101, 22)#prints the attribute name of the object sprint(getattr(s, 'name'))# reset the value of attribute age to 23setattr(s, "age", 23)# prints the modified value of ageprint(getattr(s, 'age'))# prints true if the student contains the attribute with name idprint(hasattr(s, 'id'))# deletes the attribute agedelattr(s, 'age')# this will give an error since the attribute age has been deletedprint(s.age)

输出
John23TrueAttributeError: 'Student' object has no attribute 'age'

内置的类属性除了其他属性, python类还包含一些内置的类属性, 这些属性提供有关该类的信息。
下表列出了内置的类属性。
SN Attribute Description
1 __dict__ 它提供了包含有关类名称空间信息的字典。
2 __doc__ 它包含一个带有类文档的字符串
3 __name__ 用于访问类名。
4 __module__ 它用于访问在其中定义了此类的模块。
5 __bases__ 它包含一个包含所有基类的元组。
例子
class Student:def __init__(self, name, id, age):self.name = name; self.id = id; self.age = agedef display_details(self):print("Name:%s, ID:%d, age:%d"%(self.name, self.id))s = Student("John", 101, 22)print(s.__doc__)print(s.__dict__)print(s.__module__)

输出
None{'name': 'John', 'id': 101, 'age': 22}__main__

    推荐阅读