本文概述
构造函数是一种特殊的方法(函数), 用于初始化类的实例成员。
构造函数可以有两种类型。
- 参数化构造函数
- 非参数构造函数
当我们创建此类的对象时, 将执行构造函数定义。构造函数还验证对象是否有足够的资源来执行任何启动任务。
在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__
评论前必须登录!
注册