Python作为一门高级语言,同时也是一门全对象语言,面向对象自然是python的学习重点。很多老师也都说过万物皆对象,这句话对于没有对象概念的同学来说也不好理解。
下面就通过一个示例来解释一下,这里是一份简历模板,我们可以把这个简历当做一个类。
上面这个简历模板,我们把它当做一个类,拿到这个模板(类)之后,所有人都能写出一份自己的简历(对象),也就是实例化的对象,这里每个写好的简历都有不同的信息,代表每个人的信息,类似于这样的过程就是通过类实例化对象的过程。这个过程中简历这个类只有一个,简历中需要写入哪些信息(姓名,年龄,电话......)也有条件约束,这就类似于类中的属性和方法,实例化的对象可以有很多,这也是面向对象的优势所在。
一、python面向对象介绍
面向对象编程(OOP)是一种编程范式,它将程序设计中的对象作为程序的基本单元,而不是仅仅作为数据的容器。
在面向对象编程中,对象是一组数据和相关的操作的封装。每个对象都是一个类的实例,类是对象的抽象概念,定义了对象的属性和行为。
面向对象编程的几个重要概念包括:
- 继承:允许从一个已存在的类中创建一个新类,以便从已有类中继承其属性和行为。
- 多态:允许在不同的上下文中使用相同的方法名称,并在运行时决定使用哪个方法。
- 封装:将类的内部实现隐藏在类的外部,仅向外界提供类的公共接口。
下面是一个简单的面向对象编程的示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name)
p = Person("John", 30)
p.say_hello()
在这个示例中,我们定义了一个名为 Person 的类,其中包含两个属性 name 和 age。此外,还定义了一个名为 say_hello 的方法,该方法打印简单的消息。
最后,我们创建了一个 Person 对象,并调用了其 say_hello 方法。
运行这段代码将得到以下输出:
Hello, my name is John
二、python类属性和类方法介绍
类属性是类的一个特殊的变量,可以被类中的所有实例对象共享。它不像实例属性那样与每个实例对象绑定。
类方法是类的一个特殊方法,可以被类中的所有实例对象调用。与类属性类似,类方法不和特定的实例对象绑定。
下面是一个类属性和类方法的简单例子:
class Person:
species = 'Human' # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def get_species(cls): # 类方法
return cls.species
person = Person('John Doe', 30)
print(Person.get_species()) # 输出:Human
在这个例子中,species是类属性,可以通过类名Person来访问。get_species是类方法,可以通过类名Person或实例对象person来调用。
三、python面向对象内置方法介绍
Python中面向对象编程有许多内置方法,这些方法可以帮助构建和操作类和实例对象。这里是一些常用的内置方法:
- __init__: 这是一个特殊的初始化方法,当实例对象被创建时自动调用。这个方法的主要目的是初始化实例对象的属性。
- __str__: 这是一个特殊的字符串表示方法,返回一个字符串,表示实例对象的字符串表示形式。
- __repr__: 这是一个特殊的字符串表示方法,返回一个字符串,表示实例对象的详细字符串表示形式。
- __len__: 这是一个特殊的长度方法,返回实例对象的长度。
- __del__: 这是一个特殊的析构方法,当实例对象被删除时自动调用。这个方法的主要目的是释放实例对象所占用的内存。
- __call__: 这是一个特殊的调用方法,当实例对象被当做函数调用时自动调用。
下面是一个例子,说明如何使用这些内置方法:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "Person(name={0}, age={1})".format(self.name, self.age)
def __repr__(self):
return "Person('{0}', {1})".format(self.name, self.age)
p = Person("John Doe", 30)
print(p) # 输出 Person(name=John Doe, age=30)
print(repr(p)) # 输出 Person('John Doe', 30)
更多详细教程参考:
- Python面向对象之类的定义和实例化
- Python对象属性的增删改查操作
- Python类属性的增删改查操作
- Python类属性和对象属性的区别
- Python面向对象-实例方法,类方法和静态方法
- Python面向对象-实例方法,类方法和静态方法使用详解
- Python面向对象-实例方法,类方法和静态方法调用详解
- Python面向对象-type元类查找和子类创建
- Python面向对象-公有属性、私有化属性和受保护属性的访问
- Python面向对象-私有化属性的定义和调用
- Python面向对象-私有属性实现只读功能
- Python面向对象-property操作只读属性
- Python面向对象-类属性安全处理
- Python面向对象-内置特殊属性
- Python面向对象-对象初始化属性(init)
- Python面向对象-私有化方法的定义和使用
- Python面向对象-对象信息重写方法(__str__())
- Python面向对象-__call__()方法实现对象转函数
- Python面向对象-类内置方法实现字典索引功能
- Python面向对象-类内置方法实现列表切片功能
- Python面向对象-内置方法实现对象大小比较
- Python面向对象-__bool__()方法实现上下文环境布尔值判断
- Python面向对象-内置方法实现对象迭代和遍历
- Python面向对象-内置特殊方法实现描述器
- Python面向对象-内置方法__call__()实现装饰器效果
- Python面向对象-内置方法__new__()和__del__()查看对象生命周期
- Python面向对象-统计类被实例化次数
- Python面向对象-面向对象的三大特性(封装、继承、多态)
- Python面向对象-三大特性-父类资源的使用和继承
- Python面向对象-三大特性-父类资源的覆盖或累加
- Python面向对象-三大特性之多态
- Python面向对象-抽象类的创建和用法