前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python类和对象-给你介绍个对象?

Python类和对象-给你介绍个对象?

作者头像
唔仄lo咚锵
发布2021-09-14 11:25:28
3050
发布2021-09-14 11:25:28
举报

文章目录

面向对象


害,说得像是我有对象一样。

此对象非彼对象,面向对象(Object Oriented)是一种编程的思想,而不是一种编程语言,而Python也是支持面向对象的语言。

面向对象的核心是抽象、继承、多态。 在面向对象思想中,一切皆是对象,每个对象都有它的属性个方法,每个对象都可以通过消息互相交互。

本文将侧重Python中类和对象的使用,更多面向对象思想可参考设计模式系列博客

类的定义


语法

class ClassName(father class name):

<statement-1>

...

<statement-N>

  • ClassName表示自定义类的名字
  • father class name 是继承父类的名字
  • statement是类成员表达式,可以是属性或方法

举例

代码语言:javascript
复制
class TeatA(object):  # 类名TestA
    value = 0  # 属性
    def printvalue(self):  # 方法
        print(self.value)

特别注意的是,类属性除了在class下显示的定义外,也能在方法中隐形的定义:

代码语言:javascript
复制
class TestB(object):
    def printvalue(self):
        self.value=0  # 隐形定义类属性value
        print(self.value)

类的实例化


实例化就是创建一个类的对象。定义一个类知识造出一个类型,这个类型只有实例化成对象才有真正的实用意义。

语法:直接调用类名。

代码语言:javascript
复制
a = TeatA()  # 使用类TestA实例化一个对象a
a.printvalue()  # a拥有TestA定义好的属性和方法
b = TestB()  
b.printvalue()

运行结果

内置类型的实例化

实际上Python任何类型都是面向对象意义上的类,所以都可以使用通用的实例化方法。

类的方法


类的方法其实就是定义在类内部的函数,只不过函数的首个参数必须是self(代表自身)。类方法里面调用类本身的属性和方法都必须加上self

私有方法:私有方法(同private)就是只能被类中的其他方法调用,不能被类外面调用,通过两个下划线开头来定义,私有属性同理。

类的特殊方法


初始化函数__init__

初始化函数是在类被实例化为对象时调用的函数

析构函数__del__

析构函数是在对象被del操作从内存中卸载时所调用的函数

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

操作符方法

操作符方法让类支持加减乘除等各种运算的方法。

名称

运算符

运算符方法

说明

+

__add__

两个对象相加

-

__sub__

两个对象相减

*

__mul__

两个对象相乘

/

__div__

两个对象相除

取模

%

__mod__

返回除法的余数

左移

<<

__lshift__

把一个数的比特向左移一定数目

右移

__rshift__

把一个数的比特向右移一定数目

按位与

&

__rand__

数的按位与

按位或

|

__ror__

数的按位或

按位异或

^

__xor__

数的按位异或

按位翻转

~

__invert__

x的按位翻转

小于

<

__lt__

x<y返回x是否小于y

大于

__gt__

x>y返回x是否大于y

小于等于

<=

__le__

x<=y返回x是否小于等于y

大于等于

=

__ge__

x>=y返回x是否大于等于y

等于

==

__eq__

x==y比较对象是否相等

不等于

!=

__ne__

x!=y比较两个对象是否不想等

自身加

+=

__iadd__

x+=y将y加到x中去

自身减

-=

__isub__

x-=y将y从x中减去

切片

xi:j

__getlice__

访问x的i到j部分z

下标访问

xi

__getitem__

通过i下标访问x

只要重载了对应运算符方法,那么类就能使用对应运算符了。

类的继承


继承(泛化)是使一个类获得另一个类的所有属性和方法的能力,被继承的类称为父类或基类,继承的类称为子类或派生类。

语法

class <name>(superclass1,superclass2,...)

多重继承

指一个子类继承了好几个父类,多重继承颇有争议,在C++中受人诟病,Java中用接口取代了,不过Python仍支持多重继承。

重载

指子类的属性名或方法名与父类相同时,子类的会覆盖掉父类的。

多重继承的重载

重载不只存在于子类重载父类,害存在于多重继承时父类间的重载。

当父类们的属性和方法相同时,重载规则是从右向左重载。

类的关系


Python中类的关系除了上面讲的继承(泛化)外,还有依赖、关联、聚合、组合。java有接口的话还有实现关系。

关于uml的知识,可参考一文掌握UML类图:PlantUML实操分享

依赖:类的某个方法以被依赖的类作为其参数。

关联:类作为另一个类的成员属性

聚合和组合:类的实例作为另一个类的属性,特殊的关联。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 面向对象
  • 类的定义
  • 类的实例化
  • 类的方法
  • 类的特殊方法
  • 类的继承
  • 类的关系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档