美文网首页
Mr.Li--python-高级编程

Mr.Li--python-高级编程

作者: 界面大叔 | 来源:发表于2017-06-05 20:04 被阅读0次

    is,==的区别

    a is b-->判断a和b是否指向同一块内存空间

    a==b-->判断a和b指向的空间里的内容是否一样

    深拷贝,浅拷贝

    浅拷贝

    浅拷贝是对于一个对象的顶层拷贝

    拷贝的是内存空间,并不是拷贝内容

    深拷贝是对于一个对象所有层次的拷贝(递归)

    浅拷贝对于不可变和可变类型的copy不同

    a=[1,2,3]               --------------列表

    b=copy.copy(a)

    这时打印两个变量的地址不同,如果a附加值,b不会变

    a=(1,2,3)

    b=copy.copy(a)

    这时打印两个变量的地址一样,如果a附加,b也会得到相同的值

    私有属性添加getter和setter方法:

    classMoney(object):

        def__init__(self):

            self.__money =0

        defgetMoney(self):

            returnself.__money

        defsetMoney(self, value):

            if isinstance(value, int):

                self.__money = value

            else:

                print("error:不是整型数字")

    使用property升级getter和setter

    classMoney(object):

        def__init__(self):

            self.__money =0

        defgetMoney(self):

            returnself.__money

        defsetMoney(self, value):

            ifisinstance(value, int):

                self.__money = value

            else:

                print("error:不是整型数字")

        money = property(getMoney, setMoney)

    运行结果:

    In [1]:fromget_setimportMoney

    In [2]:

    In [2]: a = Money()

    In [3]:

    使用property取代getter和setter方法

    In [3]: a.money

    Out[3]:0

    In [4]: a.money =100

    In [5]: a.money

    Out[5]:100

    In [6]: a.getMoney()

    Out[6]:100

    @property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用

    ·将方法转换为只读

    ·重新实现一个属性的设置和读取方法,可做边界判定

    classMoney(object):

        def__init__(self):

            self.__money =0

        @property

        defmoney(self):

            returnself.__money

        @money.setter

            defmoney(self, value):

                ifisinstance(value, int):

                    self.__money = value

                else:

                    print("error:不是整型数字")

    运行结果

    In [3]: a =Money()

    In [4]:

    In [4]:

    In [4]: a.money

    Out[4]:0

    In [5]: a.money

    =100

    In [6]: a.money

    Out[6]:100

    相关文章

      网友评论

          本文标题:Mr.Li--python-高级编程

          本文链接:https://www.haomeiwen.com/subject/iylwfxtx.html