面向对象的封装2

Posted TAMAYURA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的封装2相关的知识,希望对你有一定的参考价值。

class Foo:
    def __func(self): #私有属性在定义阶段就发生变化,_Foo__func
        print(Foo)
class  Bar(Foo):
    def __func(self): #因为在定义阶段就发生了变化,所以子类不能继承父类的私有属性
        print(Bar)


b = Bar()
b._Foo__func()
b._Bar__func()

class A:
    def foo(self):
        print(A.foo)
        self.__bar() #调用私有方法,找不到,除了自己类以外的方法

    def __bar(self):
        print(A.bar)
class B(A):
    def __bar(self):
        print(B.bar)

b = B()
b.foo()


class Teacher():
    def __init__(self,username,password):
        if not isinstance(password,str):
            raise Exception(密码只能是字符串)
        self.__uname = username
        self.__pwd = password
    @property
    def name(self):
        return self.__uname
    @name.setter
    def name(self,val):
        print(type(val))
        if not isinstance(val,str):
            raise TypeError(must be str)
        self.__uname=val
    @name.deleter
    def name(self):
        import re
        if re.findall((?i)sb,self.__uname): #(?i) 不区分大小写
            raise PermissionError(SB not Deleting permissions)
        else:
            del self.__uname

egon = Teacher(egon,123)
egon.name = (egonSB)
print(egon.name)

del egon.name

 

以上是关于面向对象的封装2的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

Java 封装

Java 封装

java知识28 Java封装多测师

Java 封装