Python中类第二弹

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

类里面的方法

方法就是封装在类里面的一种特殊函数。

例:

class Person:
        def sing(self):           #方法,在类里面写函数叫做在类里面定义方法。
                print("我最帅!")      #里面有一个默认值none。   print("我最帅!",none)

wuhan = Person()               #定义实例,写类必备。

wuhan.sing()        #调用类里面的方法。      格式:实例化对象.方法()
Person.sing(self = '要传入的东西')
复制代码

实例方法 的调用过程和 self:::
(1)self:通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身。
(2)实例方法:方法总是定义在类中,但是却叫“实例方法”,因为它表示该类所有实例所共有的行为。

小知识点:::self指的是实例,谁去使用它,那么它就是谁。
例:

class Person:
                def sing(self):
                        print("老师在唱歌%s"%self.geci)
                        print(id(self))     #会发现此处的self的id和下面的laoshi的id是一样的
laoshi = Person()               #在这个实例中,laoshi使用了self,所以self就是laoshi
print(id(laoshi))
#和函数的传参一样,只是会先传一个自身的实例self

laoshi.geci = "温暖了寂寞"

laoshi.sing()
复制代码

init 双下划线

初始化方法,作用是在实例化的时候,自动调用。(魔法方法)

“初始化”特殊方法:
在Python中有很多以双下划线开头且以双下划线结尾的固定方法,它们会在特定的时机被触发执行。
__init__就是其中之一,它会在实例化之后自动被调用。以完成实例的初始化。

可以在创建对象时,为对象实现一些初始化的操作,提供一些默认值,需要为类定义实例属性的时候才会执行__init__方法。

class Person:
        def __init__(self.name):
                self.name = name           #self.name是实例属性;name是方法。

        def sing(self):
                print('吴某最帅')



wumou = Person("吴某")   # 实例化      自动调用我们的初始化方法,把吴某这个名字给了name
(这句代码意味着   wumou.name = "吴某"(定义一个实例属性)    wumou.name相当于self.name,"吴某"相当于给了name)
复制代码

魔法方法:每一个魔法方法都有它特定的功能。

小知识点:
在python中,指向被删除了,就会被回收。
del删除指向,一个变量指向没有了就会被回收。
del调用的就是__init__魔法方法。
例如:列表方法中,del 列表名,再查看这个列表的时候就会报错,因为del把指向删除了。

del 析构,也叫销毁初始化方法(销毁上面的那个),是在这个文件运行完然后触发。(魔法方法)

__del__就是一个析构函数,当使用del删除对象时,会调用它本身的析构函数。提示开发者,对象被销毁了,方便调试,进行一些必要的清理工作
浅显点理解就是:(当实例对象引用数为0的时候就会调用这个魔术方法)
即当类里面使用了del魔法方法的时候,如果使用了del删除,那么就会调用__del__魔法方法;如果没有使用del删除,那么在程序的最后,会自动回收内存地址,就会调用__del__魔法方法。

入门:

class Person:
        pass

hansha = Person()
print(hansha)         #输出为:hansha这个实例化的对象指向的对象。即为:<__main__.Person object at 0x00000175C3AFC1D0>
del hansha 
print(hansha)         #输出会报错,因为指向被删除了。即为:NameError: name 'hansha' is not defined
复制代码

稍微升一点级:
python中一个程序执行完了,内存空间就会被回收,回收掉那么指向就没有了。

class Person:
        def __del__(self):        #相当于重写了python的__del__方法。在列表里使用del删除时调用的是python默认的__del__方法。
                print('好好学习')

hansha = Person()
print(11111)
print(22222)
输出为:               
11111
22222
好好学习
复制代码

来个对比的例子仔细看看:
当指向删除完了之后会调用__del__魔法方法。

class Person:
        def __del__(self):
                print('好好学习')

hansha = Person()
print(11111)
del hansha
print(22222)
输出为:               
11111
好好学习
22222
复制代码

总结的高级版:
基于变量计数的对象销毁机制
当没有一个变量指向某个对象的时候,python会自动销毁这个对象,以便回收内存空间。
del关键字,可以删除一个变量的指向。

class Person:   

        def __init__(self,name):    #初始化方法
                self.name = name

        def __del__(self): 			#析构方法(销毁方法)
                print(self.name,"被销毁了")

wuhan = person("无名")
del wuhan      #输出为:被销毁了
复制代码

猜你喜欢

转载自juejin.im/post/7031550159020359710