面向对象之类、对象的定义

 

定义类语法

复制代码
 1 class ClassName:  # 如果写类的f-docstring,就直接写在Class ClassName下一行
 2     # 属性
 3     attribute1 = value1
 4     attribute2 = value2
 5 
 6     # 方法
 7     def method1(self, parameters):
 8         # 方法实现
 9 
10     def method2(self, parameters):
11         # 方法实现
复制代码

其中,类可以包含属性和方法。

  • 属性是类的数据成员,用于存储对象的状态和数据。属性可以在类的内部和外部访问。
  • 方法是类的函数成员,用于执行特定的操作。方法通常操作对象的属性,并可能返回结果。

在方法的第一个参数中,约定使用self表示当前对象的引用,可以通过它访问对象的属性和调用其他方法。

创建对象语法

 对象名 = 类名()

创建对象的过程也叫实例化对象。

创建类、创建对象及访问对象属性、方法的示例

复制代码
 1 '''
 2 类、对象示例
 3 '''
 4 
 5 
 6 class Person:
 7     def __init__(self, name, age):
 8         self.name = name
 9         self.age = age
10 
11     def say_hello(self):
12         print(f"Hello, my name is {self.name} and I'm {self.age} years old.")
13 
14 
15 # 创建Person对象
16 person = Person("Allen", 25)
17 
18 # 调用方法
19 person.say_hello()  # 输出:Hello, my name is Allen and I'm 25 years old.
20 # 对象的属性、方法,在类的方法里使用self.属性名/方法名()调用,在类外面就是对象.属性名/方法名()调用
21 print(person.name)  # Allen
复制代码

 

 

经典类(过时)

在早期版本的Python中,有两种类型的类:经典类和新式类。经典类是指在Python 2.x 版本中定义的类,没有显式地继承自 object

在经典类中,如果一个类没有显式地继承自其他类,则会默认继承自内建的 object 类。这意味着所有经典类都有一个共同的祖先,即 object 类。但由于没有显式地继承自 object 类,经典类不具备一些新式类的特性,比如方法解析顺序(Method Resolution Order, MRO)等。

复制代码
 1 class MyClass:  # 经典类定义
 2 
 3     def __init__(self, name):
 4         self.name = name
 5 
 6     def say_hello(self):
 7         print("Hello, " + self.name)
 8 
 9 obj = MyClass("Alice")
10 obj.say_hello()  # 输出:Hello, Alice
复制代码

在上面的示例中,MyClass 是一个经典类,它定义了一个构造函数 __init__() 和一个实例方法 say_hello()

需要注意的是,在 Python 3.x 版本中,经典类已经被废弃,新式类成为唯一的类类型。因此,在现代的Python编程中,经典类已经很少使用。

新式类(python3都是新式类)

新式类是指在 Python 2.2 版本引入的一种类类型。与经典类相比,新式类更加统一和功能强大。

在新式类中,所有的类都默认继承自内建的 object 类。

这意味着所有的新式类都有一个共同的祖先,使得类之间的继承关系更加清晰和一致。

新式类引入了一些特性和功能,包括:

  1. 方法解析顺序(Method Resolution Order, MRO):新式类通过使用 C3 算法来确定方法的调用顺序,可以处理多重继承时的方法冲突。

  2. 属性访问控制:新式类提供了 @property 装饰器、@classmethod 装饰器和 @staticmethod 装饰器等,用于对属性进行访问控制和方法定义。

  3. 描述符协议:新式类支持描述符协议,可以通过定义 __get__()__set__()__delete__() 等方法来控制属性的访问。

  4. 统一对象模型:新式类统一了对象模型,使得类、实例、函数等可以互相转换和操作。

复制代码
 1 class MyClass(object):  # 新式类定义
 2 
 3     def __init__(self, name):
 4         self.name = name
 5 
 6     def say_hello(self):
 7         print("Hello, " + self.name)
 8 
 9 obj = MyClass("Alice")
10 obj.say_hello()  # 输出:Hello, Alice
复制代码

在上面的示例中,MyClass 是一个新式类,它继承自内建的 object 类,并定义了一个构造函数 __init__() 和一个实例方法 say_hello()

需要注意的是,在 Python 3.x 版本中,所有的类都默认是新式类,不再需要显式继承自 object 类。

posted @   Allen_Hao  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示