Loliko_LinawZ

导航

 

1.需要打印的方法,可以使用静态方法。

def 静态方法名():

  pass

 

静态方法需要修饰器@staticmethod来标识,告诉解释器这是一个静态方法

通过类名调用静态方法

 

使用示范:

#!/usr/bin/python3
# coding=utf-8
class Tool(object):
    #使用赋值语句,定义类属性,记录创建工具对象的总数

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

        Tool.count += 1

    @staticmethod
    def show_class_function():
        print("I am a staticmethod")

#创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁锹")

Tool.show_class_function()
View Code

 

2.单例模式:让类创建对象,在系统中只有唯一的一个实例

单例模式每次执行类名返回的对象,都是内存地址相同的

 

使用类名创建对象时,python的解释器首先会调用__new__方法为对象分配空间。

关于__new__方法(一个内置静态方法)作用:

1)为内存分配空间

2)返回对象的引用

python解释器获得对象引用以后将作为第一个参数传递给__init__方法

 

关于重写__new__方法:

1)重写以后一定要返回return super.__new__(cls)

__new__是一个静态方法,调用时需要主动传递cls参数

 

 

如果这样返回,代码最后分配的内存地址并不是同一个,所以我们需要使用单例模式。

#!/usr/bin/python3
# coding=utf-8

class MusicPlayer(object):
    def __new__(cls, *args, **kwargs):
        #1.创建对象时, new方法会被自动调用
        print("创建对象,分配空间")

        #2.为对象分配空间
        instance = super().__new__(cls)

        #3.返回对象的引用
        return instance

    def __init__(self):
        print("播放器初始化")

#创建播放器对象
player = MusicPlayer()
print(player)

player1 = MusicPlayer()
print(player is player1)

 

我们可以先划空一块内存空间,创建对象的时候先判断是否分配过,然后返回

#!/usr/bin/python3
# coding=utf-8

class MusicPlayer(object):

    instance = None

    def __new__(cls, *args, **kwargs):
        print("分配空间,创建对象。")

        if cls.instance is None:
            cls.instance = super().__new__(cls)

        return cls.instance

player = MusicPlayer()
print(player)

player1 = MusicPlayer()
print(player is player1)

 

3.异常:为了避免程序执行过程中发生异常,对可能产生的异常进行捕捉

try:  

except(错误类型):

else:  //没有异常才会执行的代码

finally:  //无论最后有无异常都会执行的代码

 

多种异常事例

#!/usr/bin/python3
# coding=utf-8

try:
    num = int(input("请输入整数:"))
    result = 8/num
    print(result)
except ValueError:
    print("请输入正确的整数")
except ZeroDivisionError:
    print("除0错误")
except Exception as result:
    print("未知错误%s" % result)
else:
    print("正常执行")
finally:
    print("执行完成,但是不保证正确")

 

假设我们在程序执行中,如果出现了异常,我们需要让程序一直执行,直到输入正常为止:

#!/usr/bin/python3
# coding=utf-8

flag = True
while flag:
    #try流程中某一句异常,不会再执行该语句后的代码,try代码块后的代码可以得到执行
    try:
        num = int(input("请输入整数:"))
        result = 8/num
        print(result)
    except ValueError:
        print("请输入正确的整数")
    except ZeroDivisionError:
        print("除0错误")
    else:
        flag = False
        print(flag)

 

posted on 2020-10-02 22:05  数码暴龙猪  阅读(146)  评论(0)    收藏  举报