-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEXPR5.py
More file actions
129 lines (73 loc) · 2.48 KB
/
EXPR5.py
File metadata and controls
129 lines (73 loc) · 2.48 KB
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
class Main:
def __init__(self,**kwargs):
self.kwargs = kwargs
class Main_super(Main):
def __init__(self,**kwargs):
super().__init__(**kwargs)
lazy1 = Main(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
lazy2 = Main_super(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
print(lazy1.kwargs.get('kw_arg3','Attribute does not exist'))
print(lazy2.kwargs.get('kw_arg4','Attribute does not exist'))
class Main:
def __init__(self,**kwargs):
self.__dict__.update(kwargs)
class Main_super1(Main):
def __init__(self,**kwargs):
super().__init__(**kwargs)
class Main_super2(Main):
def __init__(self,**kwargs):
super().__init__(**kwargs)
lazy1 = Main(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
lazy2 = Main_super1(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
lazy3 = Main_super2(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
try:
print(lazy1.kw_arg1)
print(lazy2.kw_arg2)
print(lazy3.kw_arg3)
except (AttributeError,TypeError):
print('Attribute Not Found:')
class Main:
def __init__(self,**kwargs):
self.__dict__.update(kwargs)
class Sub(Main):pass
lazy1 = Main(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
lazy2 = Sub(kw_arg1 = 'argument1',kw_arg2 = 'argument2',kw_arg3 = 'argument3')
try:
print(lazy1.kw_arg1)
print(lazy2.kw_arg2)
except (AttributeError,TypeError):
pass
from dataclasses import dataclass
@dataclass
class Main:
kw_arg1: str
kw_arg2: str
kw_arg3: str
class MainSuper(Main):
pass
lazy1 = Main(kw_arg1='arg1', kw_arg2='arg2', kw_arg3='arg3')
lazy2 = Main(kw_arg1='arg1', kw_arg2='arg2', kw_arg3='arg3')
try:
print(lazy1.kw_arg1)
print(lazy1.kw_arg2)
except (AttributeError,TypeError):
print('Attribute Not Found:')
class Mom:pass
class Dad:pass
class Brother:pass
class Sister:pass
class Pet:pass
class All(Pet,Sister,Brother,Dad,Mom):
print('MRO = Method Resolution Order')
print(All.mro())
print(All.__mro__)
class FamilyMember:
registry = []
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
cls.registry.append(cls.__name__)
print(f"Registered new family member: {cls.__name__}")
class Mom(FamilyMember): pass
class Dad(FamilyMember): pass
class Child(Mom, Dad): pass
print(FamilyMember.registry)