Python 是一种面向对象的编程语言 (OOPS)。这意味着 Python 中的一切都是某个类的对象或实例。简单来说,类是对象的蓝图。或者说,类是初始化变量、定义方法、静态方法等的组合。
本节将解释如何在 Python 面向对象编程中创建类、创建对象或实例属性、修改对象以及删除对象或实例,并提供示例。
在 Python 中创建空类
您必须使用 pass 关键字来创建不执行任何操作或创建空类。
class Employee:
pass
以下示例展示了如何在类中声明变量和创建方法。方法有不同的种类,我们将在后面的章节中讨论。现在,请理解带有方法的类语法。
class Employee:
Variable = Value
def function_name(self):
Statements
…………..
Python 类对象
类对象支持属性引用和实例化。您可以使用其中任何一个来调用类属性。这是一个实例化和属性引用的示例。
- 属性引用使用 CLName.Variable_name 或 CLName.function_name。
- 对于实例化,您必须创建该类的一个实例或副本。要创建新实例,请使用 instance_name = CLName(),要调用变量,请使用 instance_name.variable_name,要调用方法,请使用 instance_name.method_name()
这里,emp = Employee() 正在创建一个实例化,print 中的 emp.company 意味着调用类变量。接下来,Employee.company 是一个属性引用的示例。
class Employee:
company = 'Tutorial Gateway'
emp = Employee()
print(emp.company)
print("-------------")
print(Employee.company)
Tutorial Gateway
-------------
Tutorial Gateway
在这个 Python 类示例中,我们声明了一个变量 company 并定义了一个带有 self 参数的函数,该函数打印一条欢迎消息。接下来,我们为 Employee 创建了一个对象 emp1。通过使用这个对象 emp1,我们正在访问 company 变量和 func_message()。
最后两个语句使用属性引用来访问变量值和函数结果。因此,通过使用属性引用,您可以打印变量值。但是,Employee.func_message 返回函数对象而不是实际的函数结果。因此,在使用属性引用时,您应该记住这个概念。
class Employee:
company = 'Tutorial Gateway'
def func_message(self):
print('Welcome to Programming')
emp = Employee()
print(emp.company)
emp.func_message()
print("-------------")
print(Employee.company)
print(Employee.func_message)
Tutorial Gateway
Welcome to Programming
-------------
Tutorial Gateway
<function Employee.func_message at 0x7f831ddd8d30>
Python __init() 函数
默认情况下,所有实时 Python 类都具有 __init__() 函数。使用此函数为对象的属性赋值。当您创建对象时,它会自动调用 __init__() 函数。您无需手动调用它。
在这个类示例中,我们在 __init__() 函数中使用了简单的 print 语句。接下来,我们创建了一个 Employee 对象。正如您所看到的,它直接打印消息。
class Employee:
company = 'Tutorial Gateway'
def __init__(self):
print('Hello World')
def func_message(self):
print('Welcome to Python Programming')
emp1 = Employee() # Created an Instance
print(emp1.company)
emp1.func_message()

这里,我们使用 __init__() 函数为类属性添加值。这里,我们使用了函数的名称、年龄和性别,并在下一行中分配了这些值。这意味着当您创建员工对象时,您必须提供名称、年龄和性别(在创建对象本身时)。
例如,如果您创建对象 emp1 = Employee() 而不带参数值,则会引发以下错误。TypeError: __init__() 缺少 3 个必需的位置参数:'name'、'age' 和 'gender'
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print('Welcome to Programming')
emp1 = Employee('Jack', 25, 'Male')
print(emp1.company)
emp1.func_message()
print(emp1.name)
print(emp1.age)
print(emp1.gender)
init 输出
Tutorial Gateway
Welcome to Programming
Jack
25
Male
从上面的 Python 类 _init 示例中,声明参数可能会让您感到困惑,因为我们总是使用相同的名称:name、age 和 gender。然而,这不是强制性的,但这样做是最佳实践。
在此示例中,我们使用 n、a、gen 作为 __init__ 参数,并使用 name、age 和 gender 作为类的自初始化。希望这可以消除您的困惑。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, n, a, gen):
self.name = n
self.age = a
self.gender = gen
def func_message(self):
print('Welcome to Programming')
emp1 = Employee('Johnson', 29, 'Male')
print(emp1.company)
emp1.func_message()
print(emp1.name)
print(emp1.age)
print(emp1.gender)
init 输出
Tutorial Gateway
Welcome to Programming
Johnson
29
Male
Python 中的多个类对象
当您创建一个类的对象或实例时,它会持有该对象或实例的副本,而不是实际的对象或实例。这意味着您可以从单个对象创建 n 个对象,并且每个实例可能具有不同的属性值或方法值。
在此示例中,我们创建了一个 Employee。接下来,我们从该员工创建了两个对象,emp1 和 emp2。正如您所看到的,每个实例都有不同的姓名、年龄和性别。接下来,我们将这些值作为输出打印出来,您可以看到它们有效!
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print('Welcome to this World')
emp1 = Employee('Mike', 25, 'Male')
print(emp1.company)
emp1.func_message()
print(emp1.name)
print(emp1.age)
print(emp1.gender)
print()
emp2 = Employee('Tracy', 27, 'Female')
print(emp2.company)
emp2.func_message()
print(emp2.name)
print(emp2.age)
print(emp2.gender)
Tutorial Gateway
Welcome to this World
Mike
25
Male
Tutorial Gateway
Welcome to this World
Tracy
27
Female
这个类示例与上面相同。但是,这次我们修改了 func_message(self) 函数定义。它接受名称(实例变量)并将其附加到我们作为输出打印的消息中。让我从 emp1 和 emp2 这两个实例中调用此消息。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print(self.name + ' is learning Programming')
emp1 = Employee('Mike', 25, 'Male')
print(emp1.company)
print(emp1.name) # Mike
print(emp1.age) #25
print(emp1.gender)
emp1.func_message()
print()
emp2 = Employee('Tracy', 27, 'Female')
print(emp2.company)
print(emp2.name) #Tracy
print(emp2.age) # 27
print(emp2.gender)
emp2.func_message()
正如您所看到的,emp1.func_message() 将 self.name 替换为 Mike,而 emp2.func_message() 将 self.name 替换为 Tracy。
Tutorial Gateway
Mike
25
Male
Mike is learning Programming
Tutorial Gateway
Tracy
27
Female
Tracy is learning Programming
修改 Python 类变量示例
让我们看看如何使用对象修改类变量。首先,我们声明了一个公司变量和一个打印欢迎消息的函数。接下来,我们创建了 Employee 的三个实例 emp1、emp2 和 emp3。
接下来,我们使用 Object_name.Variabel_name = New_Name 来更改 emp2 和 emp3 对象的公司名称。它更改了这两个实例的公司名称。接下来,我们正在打印所有这三个实例的公司变量。
class Employee:
company = 'Tutorial Gateway'
def func_message(self):
print('Welcome to Programming')
emp1 = Employee()
emp2 = Employee()
emp3 = Employee()
emp2.company = 'Py'
emp3.company = 'Apple'
emp1.func_message()
print(emp1.company)
print(emp2.company)
print(emp3.company)
print(emp1.company)
Welcome to Programming
Tutorial Gateway
Py
Apple
Tutorial Gateway
修改 Python 类对象属性
此示例展示了如何修改对象属性。首先,我们使用所需的字段创建了 Employee 的实例 emp1。接下来,我们将可用值作为输出打印出来。
这里,emp1.name = 'John' (object_name.property_name = New_Value) 语句将现有的 emp1 名称 (Mike) 更新为 John。让我再打印一次 emp1 名称来验证。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print(self.name + ' is learning Programs')
emp1 = Employee('Mike', 25, 'Male')
print(emp1.name)
print(emp1.age)
print(emp1.gender)
emp1.func_message()
emp1.name = 'John'
print(emp1.name)
emp1.func_message()
请注意,最后两个语句正在打印新名称 John。
Mike
25
Male
Mike is learning Programs
John
John is learning Programs
删除对象属性
在这个 Python 类示例中,我们展示了如何删除对象属性。这里,emp1 = Employee(‘John’, 25, ‘Male’) 为 Employee 创建了一个实例 emp1。接下来,我们正在打印 func_message() 方法中的姓名、年龄、性别和消息。
接下来,我们使用 del 关键字删除了名为 name 的 emp1 对象属性 (del instance_name.property_name)。最后,在最后一条语句中,我们再次打印了我们删除的 emp1 对象的 name 属性。
正如您所看到的,它显示了一个错误“'Employee' 对象没有属性 'name'”。这意味着我们成功删除了对象属性。同样,您可以通过 del emp1.age 删除 age,并通过 del emp1.gender 删除 gender。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print(self.name + ' is learning Programming')
emp1 = Employee('John', 25, 'Male')
print(emp1.name)
print(emp1.age)
print(emp1.gender)
emp1.func_message()
del emp1.name
print(emp1.name)
John
25
Male
John is learning Programming
Traceback (most recent call last):
File "/Users/suresh/Desktop/simple.py", line 19, in <module>
print(emp1.name)
AttributeError: 'Employee' object has no attribute 'name'
请记住,删除实例属性不会影响其他实例属性。此 Python 类示例与上面相同。但是,这次我们为 Employee 创建了两个实例 emp1 和 emp2。接下来,我们使用 del 关键字删除了 emp1 对象的 name 属性。接下来,我们正在打印 emp2 实例和 emp1 实例的名称。
emp2.name 返回名称 Nancy,但 emp1.name 抛出错误,因为我们之前删除了它。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print(self.name + ' is learning Programming')
emp1 = Employee('John', 25, 'Male')
emp2 = Employee('Nancy', 27, 'Female')
print(emp1.name)
print(emp1.age)
print(emp1.gender)
emp1.func_message()
del emp1.name
print(emp2.name)
print(emp1.name)
John
25
Male
John is learning Programming
Nancy
Traceback (most recent call last):
File "/Users/suresh/Desktop/simple.py", line 21, in <module>
print(emp1.name)
AttributeError: 'Employee' object has no attribute 'name'
删除 Python 类和对象
在此示例中,我们使用与之前示例中定义的相同内容。在这里,我们创建了一个 Employee 对象,并显示了 func_message() 方法中的员工姓名、年龄、性别和消息。请参阅静态方法文章。
接下来,我们使用 del 关键字删除类对象 emp1 (del Object_name)。它删除了我们之前创建的实例 emp1。在最后一条语句中,我们使用 emp1 对象调用了 func_message() 方法,以检查该对象是否存在。正如您所看到的,它抛出了一个错误 'emp1' 未定义。这意味着我们通过 del 语句删除了 emp1 对象。
class Employee:
company = 'Tutorial Gateway'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def func_message(self):
print(self.name + ' is learning Programming')
emp1 = Employee('John', 25, 'Male')
print(emp1.name)
print(emp1.age)
print(emp1.gender)
emp1.func_message()
del emp1
emp1.func_message()
John
25
Male
John is learning Programming
Traceback (most recent call last):
File "/Users/suresh/Desktop/simple.py", line 19, in <module>
emp1.func_message()
NameError: name 'emp1' is not defined
创建类的不同方式
在这里,我们展示了在 python 中创建类的不同方式。正如您所看到的,您可以使用 c_name Employee、c_name() 或 c_name(object)。最后一个带有 object 的选项是最新的一种。如果您仔细观察对象创建,我们会使用相同的方法来创建所有三个对象。
class Employee:
def __init__(self):
print('Msg from Employee : Welcome to Tutorial Gateway')
class Student():
def __init__(self):
print('Msg from Student: Hello World!')
class Person(object):
def __init__(self):
print('Msg from Person: Welcome to Programming')
emp = Employee()
std = Student()
per = Person()
使用 c_name 或 c_name() 输出创建
Msg from Employee : Welcome to Tutorial Gateway
Msg from Student: Hello World!
Msg from Person: Welcome to Programming
类 self 参数
self 参数只不过是对类当前实例的引用。我们必须将此 self 参数用作第一个参数,这有助于我们访问变量。
如果您不喜欢关键字 self,那么可以使用任何单词作为 self 参数。但是,它必须是第一个参数。在此示例中,我们在第三种方法中使用了 suresh 而不是 self。
class Employee:
def __init__(self, name, age):
self.name = name
self.age = age
def func_message(self):
print(self.name + ' is learning Programming')
def func_msg(suresh):
print('Tutorial Gateway Welcome ' + suresh.name)
emp1 = Employee('John', 25)
emp1.func_message()
emp1.func_msg()
John is learning Programming
Tutorial Gateway Welcome John