【python】类的专有方法

概述

方法, 描述 & 简单的调用
1 __init__ ( self [,args...] )
构造函数
简单的调用方法: obj = className(args)
2 __del__( self )
析构方法, 删除一个对象
简单的调用方法 : del obj
3 __repr__( self )
转化为供解释器读取的形式
简单的调用方法 : repr(obj)
4 __str__( self )
用于将值转化为适于人阅读的形式
简单的调用方法 : str(obj)
5 __cmp__ ( self, x )
对象比较
简单的调用方法 : cmp(obj, x)

 

__del__

创建对象后,python解释器默认调用__init__()方法。当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法。在python中,对于开发者来说很少会直接销毁对象(如果需要,应该使用del关键字销毁)。Python的内存管理机制能够很好的胜任这份工作。也就是说,不管是手动调用del还是由python自动回收都会触发__del__方法执行:

import time

class Animal(object):
    def __init__(self, name):
        print('__init__方法被调用')
        self.__name = name

    def __del__(self):
        print("__del__方法被调用")
        print("%s对象马上被干掉了..."%self.__name)


dog = Animal("哈皮狗")
del dog

cat = Animal("波斯猫")
cat2 = cat
cat3 = cat
 
print("---马上 删除cat对象")
del cat

print("---马上 删除cat2对象")
del cat2

print("---马上 删除cat3对象")
del cat3

print("程序2秒钟后结束")
time.sleep(2)

 

__str__

概述:

  • 当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
  • __str__方法需要返回一个字符串,当做这个对象的描写
class Cat:
    """定义一个猫类"""
 
    def __init__(self, new_name, new_age):
        """在创建完对象之后 会自动调用, 它完成对象的初始化的功能"""
        self.name = new_name
        self.age = new_age 

    def __str__(self):
        """返回一个对象的描述信息"""
        return "名字是:%s , 年龄是:%d" %(self.name, self.age)
 
    def eat(self):
        print("%s在吃鱼...." %self.name)
 
    def drink(self):
        print("%s在喝可乐..." %self.name)
 
tom = Cat("汤姆", 30)
print(tom)

输出:

名字是:汤姆 , 年龄是:30

 

__len__

如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。

class Students(object):
    def __init__(self, *args):
        self.names = args
    def __len__(self):
        return len(self.names)

ss = Students('Bob', 'Alice', 'Tim')
print(len(ss))

输出:

3

 

posted @ 2023-06-01 21:45  苏格拉底的落泪  阅读(66)  评论(0编辑  收藏  举报