我是基于 deepseek v3 的 AI 助手
面向对象编程(OOP)是一种常见的编程范式,它通过将数据和操作数据的方法封装在“对象”中来组织代码。本文介绍了Python中面向对象编程的基础知识,包括如何定义类、实例化对象以及使用私有变量和方法。 首先,文章解释了类的基本语法。在Python中,类通过`class`关键字定义,类名通常使用大驼峰命名法(即每个单词首字母大写)。类中的`__init__`方法是一个特殊的魔法方法,用于在实例化对象时初始化对象的属性。文章通过一个简单的例子展示了如何定义一个类并在其中使用`__init__`方法。 接下来,文章介绍了对象函数。Python中的魔法方法(如`__init__`)在特定情况下自动调用,而普通方法则可以通过对象显式调用。文章还展示了如何在类中定义非魔法方法,并通过`self`关键字访问类内的属性和方法。 在实例化部分,文章通过一个“狗”类的例子,展示了如何实例化对象并调用对象的方法。实例化语法为`变量 = 类名(参数)`,通过这种方式可以创建类的实例并调用其方法。文章还介绍了`__str__`方法,该方法用于定义对象的字符串表示形式。 最后,文章讨论了私有变量和方法。Python中的变量和方法可以通过前缀`__`或`_`来实现私有或受保护的访问控制。私有变量和方法只能在类内部访问,而受保护的变量和方法则可以在同一文件内访问,但不能通过`import`导入。文章还提到,Python的私有机制是“伪私有”,实际上可以通过特定的方式访问私有变量。 通过这些基础知识的介绍,读者可以初步理解Python中面向对象编程的核心概念,并为后续学习更高级的面向对象特性打下基础。
# 面向对象基础
# 建立一个类
# 类的基本语法
class TestClass: | |
def __init__(self): | |
print("这是init方法") |
这是一个最基本的类,有 __init__方法
类名必须使用大驼峰命名法,即所有的单词首字母大写
类的基本语法:
class 类名: | |
函数 |
# 对象函数
在 python 中,像 __init__ 这样前后都有双下划线的叫魔法方法
例如 __init__ 就是在方法实例化时调用
一般来说,实例化方法用于建立变量,举个栗子:
class TestClass: | |
def __init__(self, value): | |
self.value = value | |
print("实例化完成") |
这样实例就有了 value 变量,类内可以通过 self.value调用 ,类外使用 实例名.value 访问
定义一个非魔法对象方法:
def 函数名(self,参数): | |
语句 |
self 就是调用对象,可以使用 self 调用类内方法或变量
类内直接写代码会直接执行,必须使用函数括起来
# 实例化
写个狗的类只会吃和睡就离谱
class Dog: | |
def __init__(self, name): | |
self.name = name | |
def eat(self): | |
print(f"{self.name}正在吃") | |
def sleep(self): | |
print(f"{self.name}正在睡") | |
def __str__(self): | |
return f"{self.name}是一只狗" |
然后实例化 Dog 类
doge = Dog("doge") | |
doge.eat() | |
doge.sleep() | |
print(doge) | |
# 输出:doge 正在吃 | |
# doge 正在睡 | |
# doge 是一只狗 |
实例化语法 变量 = 类名(参数)
doge.eat() 就是调用了对象方法 eat()
方法内使用了 self.name 作为名字
print(doge) 是调用了对象的 __str__ 方法
__str__必须返回一个字符串
# 私有变量与方法
python 的类 (对象) 变量分为以下三大类:
private使用__开头且不使用__结尾的方法或变量,只能在类内部调用protected使用_开头的方法或变量,可以在同文件内访问,但是无法import导入public正常的方法名,可以用import导入
python 的私有是伪私有,假设类 A 下有私有变量__s, 实际上 python 只是把它的名称
变成了 _A__s , 使用 类(实例)._A__s 即可访问
面向对象大部分会在第 9 篇讲,这一段就是基础中的基础
