创建或实例化对象一般通过“_Python新手学习面向对象编程基础,创建类和实例化详细讲解...

现在都流行面前对象编程。文字介绍可能看得很晕,看不懂和不理解当然看得晕,不用怕,慢慢看到最后你会有所收获。

3b22d4bddcfe5eb7e509c8e67afc1793.png
  1. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。
  2. 面向对象编程(Object Oriented Programming),简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
  3. Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。我们将详细介绍Python的面向对象编程。
  4. 在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

python新手学习面向对象基本特征:

在Python中,定义类是通过class关键字,class后面紧接着是类名,即ClassName,类名通常是大写开头的单词。我喜欢驼峰式写法首字母都大写。

定义类:

第一种类名后面直接跟冒号。

8dd03864063decfb03b93befc9210fa6.png

第二种类名后面跟小括号再冒号。

583c549b1907867ed1a2b76c33fbea62.png

第三种类名后面括号中object再跟冒号。

222537beaa8cc56946e33ce83c827e1a.png

三种的关系:第一种和第二种程序会默认就是第三种,第一种和第二种只是简写。如果没有继承自定义的类,就可以这样写。

如果要继承自定义的类就不能够简写。(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

比如你有个类叫object1,你想继承object1,你用简写就直接继承程序默认的object。


方法:事实它就是一个函数,只不过在类中定义的时候叫方法。

属性:事实它就是一个变量,只不过在类中定义的时候叫属性和有点不同。

构造函数:__init__()该方法在类实例化时会自动调用,又叫初始化方法。

ec1cee9210d8e6a9abf3393e05f8f110.png

其中构造方法有两个参数(id 和 age),self.id和self.age就是两个属性。


实例化对象:

f94c789d1d992c5055229046ae139865.png

创建多一个方法output(),打印构造函数的属性。

创建实例:

3d7fabc686df08ac7d507f7aabbbaece.png

输出结果:

d66647ca250ec2e5264d864e6f904230.png

self代表类的实例,而非类

类的方法与普通的函数只有一个特别的区别:

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,self代表的是类的实例。

self的名字并不是规定死的,也可以使用this,但是最好还是按照约定是用self。

self就是实例化op自身,其中self.name可以等同op.name。

以后再创建一个xh= ClassName('小红',18),这个时候self就是xh。

注意点:

注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。


类属性与方法

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs

类的私有方法

__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods

e6786fd061b548933a1dcdb1507bf0ed.png

继承:Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。

在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

继承和方法重写:

定义一个People人类,用Student学生类继承People人类。

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。子类只需要写一个跟父类相同的方法(函数)就可以覆盖重写。

b057abcd8299c61d6bf66f38f55ec373.png

输出结果:

d8982bde97484d0aefbb4392bb677d00.png

总结概论:

class关键字后面跟类名,继承就在小括号里面输入需要继承的类名。

__init__()构造函数该方法在类实例化时会自动调用。比如你从外面回来要进家之前要用钥匙开门,这个步骤就是初始化。

__del__() 析构函数,释放对象时使用。比如你每次锁门要出去,析构函数默认你锁上门就完了。突然有一次抽风对门说:芝麻关门。析构函数就是程序执行完之前要做的最后一件事。

self的名字并不是规定死的,也可以使用this,但是最好还是按照约定是用self。

子类方法和父类方法相同,子类方法会覆盖父类方法。

继承用个例子说:

定义一个商场类和一个人类,人类继承商场类。

785ca77e48297d90c435ee39fbe68359.png

实例化对象:

0e574900e599432aaca3f936ddbd2f7f.png

输出结果:

5647b3555fec2562348f86b3df94c7b9.png

分析例子:

商场类中有两个方法分别是买和卖。人类中只有一个go()方法。人类继承商场类中两个方法。所以后面的实例化对象中都是人类People():

xm.buy()是父类的商场类的方法,由于继承的关系,所以可以直接使用。

xh.go()是人类People()中本身方法。

xh.sell()是父类的商场类的方法,由于继承的关系,所以可以直接使用。

基础的面向对象能够了解:定义类、构造函数、方法、属性、私有化、方法重写、继承这几点就算入门,其实还有很多高级的用法。再python深入学习中逐渐掌握。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值