python—面向对象(一)

目录

类和实例

创建类

实例

属性和方法

属性

方法

魔法方法


一切皆对象,一切对象也各有自己的类型,如同宇宙万物,每一个个体都有属于自己的类,就如我们属于人类,我们的每个个体就属于一个单独的对象。python中的对象也有属于各自的类,而类又规定了这一类对象都具有的属性和行为,那么属于这一类的对象就都具有这个类的属性和行为。如int整数类型,str字符串类型.......这些是python内置的一些类,python还允许我们自己定义对象的类型。

类和实例

创建类

语法格式:

class 类名:
    属性行为

类名的写法规则:下划线法、大小驼峰法

实例

类的实例即类的对象,通过实例化方法创建一个实例对象:obj = 类名()

在类名后面添加括号就是由这个类实例化出一个对象,但是一个类可以实例出无数个对象,它们都是独立存在的,为了方便使用,我们需要给每一个实例出的对象命名,让他们又属于自己的对立空间。

属性和方法

属性

类属性

所有属于这类的对象都共有的属性,属于这一类的对象都可以访问到,定义在方法外面,一般写在类名下面。

实例访问类属性的方法:对象名.属性名

实例属性

每个实例对象所具有的属性,称之为类的实例属性,每个实例对象所具有的实例属性属于它所特有,其他同类的对象不能访问每一个实例都只一个独立的变量空间,不同实例之间的空间互不可见。

实例属性通常定义在类的初始化方法__init__中。

对于已经实例好的对象,可以通过追加的方法添加实例属性,可在定制属性访问中查看。

私有属性

属性名前加一个下划线:在类的外面对象可以直接访问

属性名前加两个下划线:在类的外面对象不能直接访问,访问的方法:对象名._类名__私有属性名

方法

类方法:定义在类中的函数,函数的参数为cls。

实例方法:实例方法在定义的时候需要指明实例参数,这个实例参数为实例本身,通常用self作为参数返回实例,当然也可以自己定义其他参数来代替self,如用this等。

私有方法:在实例方法的方法名前面添加两个下划线,外部不能调用私有方法。

魔法方法

Python中以双下划线开头且以双下划线结尾的方法函数。

初始化方法__init__(self)      

在实例生成的一瞬间就会自动执行的方法。通常会在__init__()方法中执行一些初始化的动作,主要就是创建实例属性。

析构方法__del__(self)   

使用del删除通过这个类实例化的对象时就会调用这个方法,当没有一个变量指向某个对象的时候,python会自动销毁这个对象,并回收释放内存空间。del关键字用来删除一个变量的指向。

class Person:

    def __init__(self,name):
        self.name = name

    def __del__(self):
        print(f'{self.name}这个对象已经被销毁')

a = Person('小明')
del a

  

运算方法

__add__(self,other)          # +

__sub__(self,other)          # -

__mul__(self,other)          # *

__truediv__(self,other)     # /

__mod__(self,other)        # %

__iadd__(self,other)         # +=

__isub__(self,other)         # -=

__radd__(self,other)        # 反加(后面的对象加前面的对象)

__rsub__(self,other)        # 反减(后面的对象减前面的对象)

__imul__(self,other)         # *=

__imod__(self,other)        # %=

__pow__(self,other)          # **

 打印方法

__repr__(self)    

打印,转换,使用这个魔法方法打印出的结果带有引号,命令交互模式下,直接输出的内容,调用的就是__repr__()的返回值,python中使用repr函数时调用的就是这个方法。

__str__(self)    

 print打印对象的时候,调用的是str函数,如果对象中没有__str__()方法,则会调用__repr__()方法来处理。

类的查询方法

__class__          # 查看类名:实例.__class__

__dict__            # 查看所有属性,以键和值的形式返回:实例.__dict__

__doc__            # 查看对象文档:实例.__doc__

__bases__        # 查看父类(所有直接父类):类名.__bases__

__base__         # 查看父类(当前父类,第一个父类):类名.__base__

__mor__           # 查看所继承的所有类:类名.__mro__

 实例调用方法

__call__方法       # 实例不能像函数一样被调用,要调用实例就要定义__call__方法

class C():

    def __init__(self,name):
        self.name = name

    def __call__(self):
        print('===对象被调用===')
        pass

c = C('小明')
c()

  

序列方法

__len__(self)                    # 获取长度(适用于set和dict)

__setitem__(self)             # 按照索引赋值

__getitem__(self)             # 按照索引取值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值