原创不易,转载前请注明博主的链接地址:Blessy_Zhu https://blog.csdn.net/weixin_42555080
本次代码的环境:
运行平台: Windows
Python版本: Python3.x
IDE: PyCharm
一.概述
Java面向对象程序设计中,已经见识过面向对象程序设计的三个基本特性:封装性(Encapsulation)、继承性(Inheritance)、多态性(Polymorphism)。Python完全采用了面向对象程序设计的思想,完全支持面向对象的基本功能,如封装、继承、多态以及对基类方法的覆盖或重写。但与其他面向对象程序设计语言不同的是,Python中对象的概念很广泛,Python中的一切内容都可以称为对象。例如,字符串、列表、字典、元组等内置数据类型都具有和类完全相似的语法和用法。
二.定义类、实例化对象
2.1.定义类
数据成M成属性(成员变量) ,用南数形式我
创建类时用变量形式表示的对象属性称为数据成员或属性(成员变量,用函数形式表示的对象行为称为成员函数(成员方法),成员属性和成员方法统称为类的成员。
类定义的最简单形式如下:
class类名:
属性(成员变量)
属性
…
…
下面通过简单的举例,展示如何定义一个类:
#定义一个Person人员类。
class Person:
i=1 #成员变量(属性)
def HelloWorld(self):
print("Hello World!") ;#成员函数
上面这个例子是,在Person类中定义一个成员函数HelloWorld()用于输出字符串"Hello World!".同样,Python使用缩进标识类的定义代码,
(1)成员函数(成员方法)
在Python中函数和成员方法(成员函数)是有区别的。成员方法般指与特定实例绑定的函数,通过对象调用成员方法时,对象本身将被作为第一个参数传递过去,普通函数并不具备这个特点。
(2) self
可以看到,在成员函数HelloWorld()中有一个参数self.这也是类的成员函数(方法)与普通函数的主要区别。类的成员函数必须有一个参数self,而且位于参数列表的开头。self就代表类的实例(对象)自身,可以使用sef引用类的属性和成员函数。在类的成员函数中访问实例属性时需要以self 为前缀,但在外部通过对象名调用对象成员的数时并不需要传递这个参数,如果在外部通过类名调用对象成员函数则需要显式为self 会数传值。
2.2 对象定义
这个内容和Java学的内容是一样的,都是通过实例对象,然后通过对象名.成员的方式访问其中的数据成员和成员方法。
三.构造函数
类可以定义一个特殊的叫做 init ()的 方法(构造函数,以两个下划线“”开头和结束)。一个类定义 init ()方法后, 类实例化时就会自动为新生成的类实例调用__init ()方法。构造函数一般用于完成对象数据成员设置初值或进行其他必要的初始化工作。如果用户未涉及构造函数,Python将提供一个默认的构造函数。
如下例子是定义一个Student构造函数完成对象变量初始化工作。
class Student:
def __init__ (self, age, sex):
self.a = age
self.s = sex
s = Student(18, '男')
print(s.a,s.s)
>>>结果:18,男
四.析构函数
Python中类的析构函数是__del__() ,用来释放对象占用的资源,在Python收回对象空间之前自动执行。如果用户未涉及析构函数,Python将提供一个默认的析构函数进行必要的清理工作。
例如:
class Student:
def __init__ (self, age, sex):
self.a = age
self.s =
def __del__(self):
print('Student不存在了')
s = Student(18, '男')
print(s.a,s.s)
del s
>>>结果:18,男 Student不存在了
五.实例属性和类属性
属性(成员变量)有两种: 一种是实例属性,另一种是类属性(类变量)。实例属性是在构造函数_init_ (以两个下划线“”开头 和结束)中定义的,定义时以self作为前缀;类属性是在类中方法之外定义的属性。在主程序中(在类的外部),实例属性属于实例(对象),只能通过对象名访问;类属性属于类可通过类名访问,也可以通过对象名访问,为类的所有实例共享。类属性可以在该类中的所有实例之间共享,可以在类的内部或者外部使用“类名.属性名”的方式调用。
具体使用可见下图1所示,结果如图2所示:
图1
图2
5.总结
这篇文章的主要内容讲解了Python基础内容——面向对象程序设计,并给出了其中定义和使用类、构造函数、析构函数、实例属性和类属性,属于基础记忆性的内容。这篇内容写到这了,同时也希望大佬们批评指正,因为是新手难免会有说的不恰当甚至错误的内容,还请大佬们不要手下留情。