python 02

落花浮王杯 提交于 2019-11-26 13:21:57
class A(object):
    def __init__(self):
        # 私有 在变量名称前加上‘_ _’
        # 私有 不可继承,不可在外部调用
        # 但是可以在内部调用
        self.__a = 1000
        # 约定使用“_”来表示私有
        self._b = 100
    def B(self):
        print(self.__a)
        self.__c()
    def __c(self):
        print(self.__a)
        
A_ = A( )
print(A_._A__a)
print(A_.B())
print(dir(A_)) # 查看该实例所有的方法和属性

使用装饰器的时候,需要注意

1.装饰器名、函数名需一致
2.property需要先声明,再写setter,顺序不能倒过来
3.如果某个变量只允许被访问不允许被修改,就可以使用访问器@property
4.如果需要修改访问器中的变量,可以搭建一个修改器,或者删除访问器例子:
class A(object):
    def __init__(self,a,b,c):
        self.__a=a
        self.__b=b
        self.__c=c
    @property
    def B(self):
        print(self.__a)
    @B.setter
    def B(self,num):
        self.__a=num
    def sum(self):
        print(self.__a+self.__b+self.__c)
a=A(12,1,4)
a.B=99
a.sum()   

python是一门动态语言

动态语言允许我们在程序运行时给对象绑定新的属性或方法,当然也可以对已经绑定的属性和方法进行解绑定

 

class Num(object):
    def __ini__(self):
        self.a = 1000
    
    def A(self):
        print(self.b)
        
num = Num()
num.b =100000
#print(num.a)
print(num.b)
num.A()

slots魔法

在类中定义__slots___变量来限定自定义类型的对象只能绑定某些属性
需要注意的是\_\_slots\_\_的限定只对当前类的对象生效,对子类并不起任何作用   
class Num(object):
    __slots__ = ('a','b')
    def __init__(self):
        self.a = 1000
        
num = Num()
num.b = 10000
print(num.b)
num.c = 123
print(num.c)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!