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

面向对象


在这里插入图片描述
害,说得像是我有对象一样。
此对象非彼对象,面向对象(Object Oriented)是一种编程的思想,而不是一种编程语言,而Python也是支持面向对象的语言。

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

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

类的定义


语法
class ClassName(father class name):
    <statement-1>
    ...
    <statement-N>

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

举例

class TeatA(object):  # 类名TestA
    value = 0  # 属性
    def printvalue(self):  # 方法
        print(self.value)

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

class TestB(object):
    def printvalue(self):
        self.value=0  # 隐形定义类属性value
        print(self.value)

类的实例化


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

语法:直接调用类名。

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中减去
切片x[i:j]__getlice__访问x的i到j部分z
下标访问x[i]__getitem__通过i下标访问x

只要重载了对应运算符方法,那么类就能使用对应运算符了。
在这里插入图片描述

类的继承


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

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

在这里插入图片描述
多重继承
指一个子类继承了好几个父类,多重继承颇有争议,在C++中受人诟病,Java中用接口取代了,不过Python仍支持多重继承。
在这里插入图片描述
重载
指子类的属性名或方法名与父类相同时,子类的会覆盖掉父类的。
在这里插入图片描述
多重继承的重载
重载不只存在于子类重载父类,害存在于多重继承时父类间的重载。
当父类们的属性和方法相同时,重载规则是从右向左重载。
在这里插入图片描述

类的关系


Python中类的关系除了上面讲的继承(泛化)外,还有依赖、关联、聚合、组合。java有接口的话还有实现关系。
关于uml的知识,可参考一文掌握UML类图:PlantUML实操分享

依赖:类的某个方法以被依赖的类作为其参数。
在这里插入图片描述
关联:类作为另一个类的成员属性
在这里插入图片描述
聚合和组合:类的实例作为另一个类的属性,特殊的关联。
在这里插入图片描述
Python系列博客持续更新中

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/
微信公众号:唔仄lo咚锵
如果文章对你有帮助,记得一键三连❤

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页