For a round patio table, although you can’t tell from the picture:

Also despite appearances, that’s 3D printed from clear-ish TPU, with its black appearance due to internal reflections from the leg’s dark interior.
The original hard-white-plastic feet had eroded enough to let the aluminum legs scrape the deck paint:

The only way to extract each old foot was to hack out a segment with a razor knife, after which it slid out easily.
The ring around the top of the sections provides enough griptivity inside the leg to hold the foot in place:

As with the TPU chains on the bike rack tray holder, I expect the compressed / bent segments will gradually relax inside the legs, but the feet ought not fall out in normal use.
The OpenSCAD source code isn’t quite a one-liner, but it’s close:
// Patio Table Foot - round legs
// Ed Nisley - KE4ZNU
// 2026-05-29
include <BOSL2/std.scad>
/* [Hidden] */
ID = 0;
OD = 1;
LENGTH = 2;
HoleWindage = 0.2;
Protrusion = 0.01;
NumSides = 4*3*2*4;
Gap = 5.0;
$fn=NumSides;
PadOA = [8.0,1*INCH,3.0];
SleeveOA = [13.0,21.7 - HoleWindage,12.0];
Kerf = 2.5;
//-----
// Build it
difference() {
union() {
tube(PadOA[LENGTH],od=PadOA[OD],id=PadOA[ID],anchor=BOTTOM) position(TOP)
tube(SleeveOA[LENGTH],od=SleeveOA[OD],id=SleeveOA[ID],anchor=BOTTOM);
up(PadOA[LENGTH] + SleeveOA[LENGTH] - 1.0)
torus(d_maj=SleeveOA[OD],r_min=(PadOA[OD] - SleeveOA[OD])/2,anchor=TOP);
}
up(PadOA[LENGTH])
for (a = [0,60,120])
zrot(a)
cuboid([PadOA[OD],Kerf,2*SleeveOA[LENGTH]],anchor=BOTTOM);
}
Spam comments get trashed, so don’t bother. Comment moderation may cause a delay.