python常用内置方法的应用

1.__init__():

__init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,name,age)

# 定义一个狗类
class Dog(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


# 定义一个对象wc名字叫"旺财",年龄为19
wc = Dog("旺财", 19)
print(wc.name)
print(wc.age)

输出结果:

旺财

19

2.__str__():

# 定义一个狗类
class Dog(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "狗的名字叫%s,年龄为:%d" % (self.name, self.age)


# 定义一个对象wc名字叫"旺财",年龄为19
wc = Dog("旺财", 19)

print(wc)
  • 当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__(self)方法,那么就会打印从在这个方法中 return 的数据
  • __str__方法通常返回一个字符串,作为这个对象的描述信息

3.__del__():

创建对象后,python解释器默认调用__init__()方法;

当删除对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法

  • 当有变量保存了一个对象的引用时,此对象的引用计数就会加1;

  • 当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。

  • 当程序运行结束时,也会自动调用__del__()方法,因为python解释器每当程序结束会自动删除对象。

4.__new__():

class A(object):
    def __init__(self):
        print("这是 init 方法")

    def __new__(cls):
        print("这是 new 方法")
        return object.__new__(cls)

A()
  • 创建对象时自动调用父类object类中的__new__()方法进行实例化对象,在__init__()方法之前调用。
  • 一般创建单例对象时会在object子类中用到
  • __new__至少要有一个参数CLS,代表要实例化的类,此参数在实例化时由Python的解释器自动提供

  • __new__必须要有返回值,返回实例化出来的实例,点这在自己实现__new__时要特别注意,可以返回父类__new__出来的实例,或者直接是对象的__new__出来的实例

  • __init__有一个参数的自我,这个就是__new__报道查看的实例,__init____new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

  • 我们可以将类比作制造商,__new__方法就是前期的原材料购买环节,__init__方法就是在有原材料的基础上,加工,初始化商品环节

猜你喜欢

转载自blog.csdn.net/qq_34776336/article/details/80383838