Design A Bicycle
~3 mins read
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from units import Measurement
class Frame:
...
class Stem:
length: Measurement
class Fork:
...
class Handlebar:
...
class Flatbar(Handlebar):
...
class Dropbar(Handlebar):
...
class Tube:
...
class Tyre:
...
class Wheel:
diameter: Measurement
tube: Optional[Tube]
tyre: Optional[Tyre]
class Wheelset:
front: Wheel
rear: Wheel
class Pedal:
...
Pedalset = tuple(Pedal, Pedal)
class GearSystem:
...
class BrakeSystem:
...
class DiscBrakeSystem(BrakeSystem):
...
class HydraulicDiscBrake(DiscBrakeSystem):
...
class MechanicalDiscBrake(DiscBrakeSystem):
...
class RimBrake(BrakeSystem):
...
class SuspensionSystem:
...
class Seat:
...
class Bicycle:
frame: Frame
stem: Stem
fork: Fork
handlebar: Handlebar
wheelset: Wheelset
brakes: BrakeSystem
pedals: Optional[Pedalset]
suspension: Optional[SuspensionSystem]
seat: Optional[Seat]
def pedal():
...
def brake():
...
def turn():
...
class RoadBike(Bicycle):
...
class GravelBike(Bicycle):
...
class MountainBike(Bicycle):
...
class CityBike(Bicycle):
...
class HybridBike(Bicycle):
...
class EBike(Bicycle):
...
class Cyclist(Human):
def cycle(bike:Bicycle):
...