首页 > 编程语言 >python封装

python封装

时间:2022-10-19 08:33:06浏览次数:63  
标签:__ .__ 封装 python self print bar foo

这种变形的特点:
1,在类外部无法直接obj.__AttrName
2,在类内部可以直接使用:obj.__AttrName
3,子类无法覆盖父类__开头的属性

0,

class A:
    '类的封装啊'
    __x = 1    #  _A__x = 1
    print('你去吃啥饭0000')
    def __init__(self,name):
        print('执行__init__')
        self.__name = name     #   self._A__name = name

    def __foo(self):   #  def _A__foo
        print('run foo')
        print('你去吃啥饭__foo')

    def bar(self):
        print('你去吃啥饭bar')
        self.__foo()
        print('from Bar')

print(A.__dict__)

a = A('egon')
# print(A._A__foo(a))
# a._A__foo()
# a.bar()
print(a._A__name)
# print(a.__name)
# # a._A__foo()
print('隐藏了呢',a._A__x)

输出:

你去吃啥饭0000
{'__module__': '__main__', '__doc__': '类的封装啊', '_A__x': 1, '__init__': <function A.__init__ at 0x000001BD2399D0D0>, '_A__foo': <function A.__foo at 0x000001BD2399D158>, 'bar': <function A.bar at 0x000001BD2399D1E0>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>}
执行__init__
egon
隐藏了呢 1

1,

class Foo:
    def __func(self):   #   _Foo__func
        print('from foo')

class Bar(Foo):
    def __func(self):   #   _Bar__func
        print('from bar')

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

输出:

from bar
from foo

2,

class B:
    __x = 1
    def __init__(self,name):   #   _Bar__func
        self.__name = name   #   self._B__name = name
    def pirnt(self):
        print('你好啊',self.__z)

print(B._B__x)
B.__y = 2
print(B.__dict__)

b = B('egon')

print(b.__dict__)

b.__age = 18
print(b.__dict__)
print(b.__age)
B._B__z = 2
# B.pirnt(b)
b.pirnt()
print(B.__dict__)

输出:

1
{'__module__': '__main__', '_B__x': 1, '__init__': <function B.__init__ at 0x000002B30320D0D0>, 'pirnt': <function B.pirnt at 0x000002B30320D158>, '__dict__': <attribute '__dict__' of 'B' objects>, '__weakref__': <attribute '__weakref__' of 'B' objects>, '__doc__': None, '__y': 2}
{'_B__name': 'egon'}
{'_B__name': 'egon', '__age': 18}
18
你好啊 2
{'__module__': '__main__', '_B__x': 1, '__init__': <function B.__init__ at 0x000002B30320D0D0>, 'pirnt': <function B.pirnt at 0x000002B30320D158>, '__dict__': <attribute '__dict__' of 'B' objects>, '__weakref__': <attribute '__weakref__' of 'B' objects>, '__doc__': None, '__y': 2, '_B__z': 2}

3 封装执行顺序


class A:
    def foo(self):
        print('A.foo')

    def bar(self):
        print('A.bar')
        self.foo()   #b.foo()

class B(A):
    def foo(self):
        print('B.foo')

b = B()
b.bar()

print('-----------------------------------------------------------')

class A:
    def __foo(self):   #   _A__foo
        print('A.foo')

    def bar(self):
        print('A.bar')
        self.__foo()   #   self._A.foo()

class B(A):
    def __foo(self):   #   _B__foo
        print('B.foo')

b = B()
b.bar()

输出:

A.bar
B.foo
-----------------------------------------------------------
A.bar
A.foo

标签:__,.__,封装,python,self,print,bar,foo
From: https://www.cnblogs.com/heris/p/16804913.html

相关文章

  • python类中的数据问题
    问题:1.)上面的__init__函数中,加*句我不写,为啥不可以?不理解里面怎么传递。。。初始化的时候不是先在内部调用了__init__,生成了L了吗?下面函数不能用这里的L,甚至是a,b这些变......
  • Selenium+Python系列 - 开发环境搭建
    一、写在前面我从未想过自己会写python系列的自动化文章,有些同学会问,那你现在为什么又开始写了?不止一个人找过我,问我可以写一些Python自动化的文章吗,答案是肯定的。笔......
  • Python 操作Excel-openpyxl模块使用
    openpyxl的用法实例1.1Openpyxl库的安装使用openpyxl模块是一个读写Excel2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一......
  • 学习python-Day76
    今日学习内容一、虚拟机关键配置名词解释1.虚拟网络编辑器说明桥接模式​ 配置的地址信息和物理主机地址信息相同,容易造成地址冲突NAT模式​ 配置的地址信息和物......
  • Python OpenCV4趣味应用系列(一)---伪彩色效果
    工欲善其事,必先利其器!起航之前先把环境搭建好:第一步:安装Python,官网下载,选个python3.x(自己喜欢的版本),同时将Python相关目录添加到环境变量;第二步:安装python-opencv,cmd命令......
  • Python OpenCV4趣味应用系列(三)---内切圆/外接圆
    为了方便讲解,我们先来创建一个多边形做演示第一步:创建图像,并绘制一个六边形。代码和生成图像如下:#Createanimager=100src=np.zeros((4*r,4*r),dtype=np.uint8)#C......
  • Python OpenCV4趣味应用系列(四)---颜色物体实时检测
    今天,我们来实现一个视频实时检测颜色物体的小实例,视频中主要有三个颜色物体,我们只检测红色和绿色的球状物体,如下图所示:第一步需要打开视频(或者摄像头):cap=cv2.VideoCaptur......
  • python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件)
    python网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件)requests是一个Python第三方库,用于向URL地址发起请求bs4全名BeautifulSoup4,是编写python爬虫常用库之......
  • Python全功能测试框架pytest
    目录PyTest一、快速开始1、介绍2、安装3、第一个测试4、断言引发异常5、分组测试6、添加临时目录二、调用测试1、布局规则1.1规则1.2测试布局1.2.1测试代码分......
  • Python: Abstract Factory Pattern
    AbstractFactory.py##抽象工厂模式AbstractFactoryPatternfrom__future__importannotationsfromabcimportABC,abstractmethodclassAbstractFactory(ABC......