个性化阅读
专注于IT技术分析

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 information
emp2.display();

输出

ID: 101 
Name: John
ID: 102 
Name: David

示例:计算一个类的对象数

class Student:
    count = 0
    def __init__(self):
        Student.count = Student.count + 1
s1=Student()
s2=Student()
s3=Student()
print("The number of students:", Student.count)

输出

The number of students: 3

Python非参数构造函数示例

class Student:  
    # Constructor - non parameterized  
    def __init__(self):  
        print("This is non parametrized constructor")  
    def show(self, name):  
        print("Hello", name)  
student = Student()  
student.show("John")

输出

This is non parametrized constructor
Hello John

Python参数化构造函数示例

class Student:  
    # Constructor - parameterized  
    def __init__(self, name):  
        print("This is parametrized constructor")  
        self.name = name  
    def show(self):  
        print("Hello", self.name)  
student = Student("John")  
student.show()

输出

This is parametrized constructor
Hello 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 Student
s = Student("John", 101, 22)

#prints the attribute name of the object s
print(getattr(s, 'name'))

# reset the value of attribute age to 23
setattr(s, "age", 23)

# prints the modified value of age
print(getattr(s, 'age'))

# prints true if the student contains the attribute with name id

print(hasattr(s, 'id'))
# deletes the attribute age
delattr(s, 'age')

# this will give an error since the attribute age has been deleted
print(s.age)

输出

John
23
True
AttributeError: '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 = age
    def 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__
赞(1) 打赏
未经允许不得转载:srcmini » Python构造函数使用详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏