目录
前言
一、面向对象
二、类和对象
(一)类
简介
定义类
(二)对象
简介
创建对象
(三)总结
三、实例属性和实例方法
(一)实例属性
创建的基本语法
使用示例
(二)实例方法
定义实例方法的基本语法
调用示例方法的示例
(三)总结
四、类中的self
(一)基本概念
(二)作用
访问实例属性
调用其他实例方法
在构造函数中初始化对象
(三)总结
五、__init__方法
(一)__init__方法的特点
(二)基本语法
(三)示例
(四)总结
上篇文章主要了解了python函数进阶,函数参数的高级用法,匿名函数和递归函数等,接下来咱们接着讲python中很重要的知识点-面向对象。
Python的面向对象编程是一种将程序中的数据和函数封装在对象内部的编程方式。这种编程方式可以使代码更具结构性、模块化和可重用性。
在Python中,类和对象是面向对象编程的核心概念。它们是组织代码、重用代码的基础。
类是对象的模板。它定义了对象的属性和方法,但本身并不实际占用内存。类是一种抽象的概念,只有在通过实例化创建对象时,类的定义才会转化为具体的实例。
类通过 class
关键字定义,类定义通常包括:
示例:
class Dog:
# 类属性(可选)
species = "Dog"
# 初始化方法(构造函数)
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age # 实例属性
# 实例方法
def bark(self):
return "旺旺"
该示例中,Dog
类有一个类属性 species
和两个实例属性 name
和 age
,以及一个实例方法bark()
。
对象是类的实例。通过类定义的模版,你可以创建多个对象实例,每个实例都可以拥有自己的属性值。对象是类的具体体现,代表了类中定义的现实世界的实体。
# 创建一个 Dog 类的对象
my_dog = Dog(name="Buddy", age=3)
# 访问对象的属性
print(my_dog.name) # 输出: Buddy
print(my_dog.age) # 输出: 3
# 调用对象的方法
print(my_dog.bark()) # 输出: Buddy says woof!
在这个例子中,my_dog是 Dog
类的一个实例对象,它具有 name
和 age
属性,并且可以调用 bark
方法。
面向对象编程通过类和对象的概念,帮助我们更好地组织和管理代码,使得程序设计更加模块化和易于维护。
Python 中,实例属性和实例方法是面向对象编程的核心部分,它们是类的对象的组成部分。
实例属性是属于对象的属性,每个对象都有自己的实例属性。它们通常在类的构造函数 __init__
中定义,并通过 self
关键字进行访问和赋值。
class Car:
def __init__(self, make, model, year):
self.make = make # 实例属性
self.model = model # 实例属性
self.year = year # 实例属性
在这个例子中:
make
、model
和 year
是 Car
类的实例属性。Car
对象都有这些属性,且每个对象可以有不同的属性值。my_car = Car("大众", "宝来", 2020)
print(my_car.make) # 输出: 大众
print(my_car.model) # 输出: 宝来
print(my_car.year) # 输出: 2020
实例方法是定义在类中的方法,用于操作实例属性或者执行与对象相关的任务。实例方法的第一个参数通常是 self
,它代表调用该方法的对象实例。
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def display_info(self):
return f"{self.year} {self.make} {self.model}"
在这个例子中,display_info
是一个实例方法,它访问对象的实例属性 make
、model
和 year
,并返回一个格式化的字符串。
my_car = Car("大众", "宝来", 2020)
print(my_car.display_info()) # 输出: 2020 大众 宝来
__init__
中定义,并且每个对象可以有不同的属性值。self
作为第一个参数,以便访问和操作对象的属性和其他方法。实例属性和实例方法使得对象不仅可以存储数据,还可以执行与这些数据相关的操作,这使得面向对象编程更具灵活性和功能性。
在 Python 中,self
是一个非常重要的概念,它在类的方法中扮演着关键角色。self
是实例对象的引用,允许实例方法访问和修改实例的属性和其他方法。
self的作用主要有三种:访问实例属性、调用其他实例方法和在构造函数中初始化对象。
self
允许方法访问对象的实例属性。通过 self
,你可以读取和修改对象的属性值。
示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
在这个例子中,self.name
和 self.age
允许 greet
方法访问 Person
对象的 name
和 age
属性。
self
还允许方法调用同一对象的其他实例方法。
示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
def birthday(self):
self.age += 1
return f"Happy birthday, {self.name}! You are now {self.age} years old."
在该例子中,birthday
方法通过 self
修改了 age
属性,并且可以调用 greet
方法来返回个性化的生日祝福。
self
用于初始化对象的属性,确保每个对象都有自己独立的属性值。
示例:
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
该例子中,self
用于在 Car
对象创建时设置 make
、model
和 year
属性。
总之,self 是 Python 类中的一个重要机制,使得对象可以在其方法内部引用自己,从而实现数据封装和行为的组织。
__init__
方法是一个特殊的方法,用于在创建类的实例时初始化对象的属性。该方法通常被称为构造函数,尽管它并不是真正意义上的构造函数,而是初始化器。它为对象设置初始状态,并为其分配属性值。
__init__方法主要有以下4个特点:
初始化对象:当你创建类的实例时,Python 会自动调用 __init__
方法。这让你可以在对象创建时设置初始属性值。
第一个参数是 self
:__init__
方法的第一个参数必须是 self
,它指向正在创建的实例对象。通过 self
,你可以访问和设置对象的属性。
可以接受其他参数:除了 self
,__init__
方法可以接受其他参数,这些参数通常用于为对象的属性赋值。
无需显式调用:你不需要手动调用 __init__
方法。它会在创建对象时自动调用。
示例:
class MyClass:
def __init__(self, param1, param2):
self.attr1 = param1
self.attr2 = param2
该例子中:
param1
和 param2
是传递给 __init__
方法的参数。self.attr1
和 self.attr2
是实例属性,使用传入的参数进行初始化。class Dog:
def __init__(self, name, age, breed):
self.name = name # 实例属性
self.age = age # 实例属性
self.breed = breed # 实例属性
def bark(self):
return f"{self.name} 旺旺"
# 创建一个 Dog 类的实例
my_dog = Dog("旺财", 3, "柯基")
# 访问实例属性
print(my_dog.name) # 输出: Buddy
print(my_dog.age) # 输出: 3
print(my_dog.breed) # 输出: 柯基
# 调用实例方法
print(my_dog.bark()) # 输出: 旺财旺旺
该示例中:
__init__
方法接收 name
、age
和 breed
作为参数,并将它们赋值给 Dog
对象的实例属性 self.name
、self.age
和 self.breed
。my_dog
实例时,__init__
方法自动被调用,初始化对象的属性。__init__
方法是初始化器:它用于在创建对象时设置初始属性值。__init__
方法会自动执行,无需手动调用。self
:__init__
方法的第一个参数是 self
,它指向新创建的实例对象,允许你设置该实例的属性。通过使用 __init__
方法,你可以确保每个对象在创建时都有一个一致的初始状态,并且可以根据需要传递不同的参数来定制对象的属性。