Skip to content

Commit 794096b

Browse files
committed
Signed-off-by: twowater <[email protected]>
1 parent 146f759 commit 794096b

36 files changed

+2001
-1
lines changed

Code/Python10Code/.idea/Python10Code.iml

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python10Code/.idea/inspectionProfiles/profiles_settings.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python10Code/.idea/misc.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python10Code/.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python10Code/.idea/workspace.xml

+606
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python10Code/com/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
def __init__(self, name, age):
6+
self.name = name;
7+
self.age = age;
8+
9+
user=User('两点水',23)
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class Number(object):
5+
def __init__(self, value):
6+
self.value = value
7+
8+
def __eq__(self, other):
9+
print('__eq__')
10+
return self.value == other.value
11+
12+
def __ne__(self, other):
13+
print('__ne__')
14+
return self.value != other.value
15+
16+
def __lt__(self, other):
17+
print('__lt__')
18+
return self.value < other.value
19+
20+
def __gt__(self, other):
21+
print('__gt__')
22+
return self.value > other.value
23+
24+
def __le__(self, other):
25+
print('__le__')
26+
return self.value <= other.value
27+
28+
def __ge__(self, other):
29+
print('__ge__')
30+
return self.value >= other.value
31+
32+
33+
if __name__ == '__main__':
34+
num1 = Number(2)
35+
num2 = Number(3)
36+
print('num1 == num2 ? --------> {} \n'.format(num1 == num2))
37+
print('num1 != num2 ? --------> {} \n'.format(num1 == num2))
38+
print('num1 < num2 ? --------> {} \n'.format(num1 < num2))
39+
print('num1 > num2 ? --------> {} \n'.format(num1 > num2))
40+
print('num1 <= num2 ? --------> {} \n'.format(num1 <= num2))
41+
print('num1 >= num2 ? --------> {} \n'.format(num1 >= num2))
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
def __new__(cls, *args, **kwargs):
6+
# 打印 __new__方法中的相关信息
7+
print('调用了 def __new__ 方法')
8+
print(args)
9+
# 最后返回父类的方法
10+
return super(User, cls).__new__(cls)
11+
12+
def __init__(self, name, age):
13+
print('调用了 def __init__ 方法')
14+
self.name = name
15+
self.age = age
16+
17+
18+
if __name__ == '__main__':
19+
usr = User('两点水', 23)
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
6+
name=''
7+
8+
def __setattr__(self, name, value):
9+
# 每一次属性赋值时, __setattr__都会被调用,因此不断调用自身导致无限递归了
10+
# 会造成程序奔溃
11+
self.name = value
12+
13+
14+
if __name__ == '__main__':
15+
user = User()
16+
user.name='两点水'
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
def __getattr__(self, name):
6+
print('调用了 __getattr__ 方法')
7+
return super(User, self).__getattr__(name)
8+
9+
def __setattr__(self, name, value):
10+
print('调用了 __setattr__ 方法')
11+
return super(User, self).__setattr__(name, value)
12+
13+
def __delattr__(self, name):
14+
print('调用了 __delattr__ 方法')
15+
return super(User, self).__delattr__(name)
16+
17+
def __getattribute__(self, name):
18+
print('调用了 __getattribute__ 方法')
19+
return super(User, self).__getattribute__(name)
20+
21+
22+
if __name__ == '__main__':
23+
user = User()
24+
# 设置属性值,会调用 __setattr__
25+
user.attr1 = True
26+
# 属性存在,只有__getattribute__调用
27+
user.attr1
28+
try:
29+
# 属性不存在, 先调用__getattribute__, 后调用__getattr__
30+
user.attr2
31+
except AttributeError:
32+
pass
33+
# __delattr__调用
34+
del user.attr1
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
pass
6+
7+
8+
if __name__ == '__main__':
9+
print(dir(User()))
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class User(object):
5+
def __init__(self, name='两点水', sex='男'):
6+
self.sex = sex
7+
self.name = name
8+
9+
def __get__(self, obj, objtype):
10+
print('获取 name 值')
11+
return self.name
12+
13+
def __set__(self, obj, val):
14+
print('设置 name 值')
15+
self.name = val
16+
17+
18+
class MyClass(object):
19+
x = User('两点水', '男')
20+
y = 5
21+
22+
23+
if __name__ == '__main__':
24+
m = MyClass()
25+
print(m.x)
26+
27+
print('\n')
28+
29+
m.x = '三点水'
30+
print(m.x)
31+
32+
print('\n')
33+
34+
print(m.x)
35+
36+
print('\n')
37+
38+
print(m.y)
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
5+
class Meter(object):
6+
def __init__(self, value=0.0):
7+
self.value = float(value)
8+
9+
def __get__(self, instance, owner):
10+
return self.value
11+
12+
def __set__(self, instance, value):
13+
self.value = float(value)
14+
15+
16+
class Foot(object):
17+
def __get__(self, instance, owner):
18+
return instance.meter * 3.2808
19+
20+
def __set__(self, instance, value):
21+
instance.meter = float(value) / 3.2808
22+
23+
24+
class Distance(object):
25+
meter = Meter()
26+
foot = Foot()
27+
28+
29+
if __name__ == '__main__':
30+
d = Distance()
31+
print(d.meter, d.foot)
32+
d.meter = 1
33+
print(d.meter, d.foot)
34+
d.meter = 2
35+
print(d.meter, d.foot)
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class FunctionalList:
5+
''' 实现了内置类型list的功能,并丰富了一些其他方法: head, tail, init, last, drop, take '''
6+
7+
def __init__(self, values=None):
8+
if values is None:
9+
self.values = []
10+
else:
11+
self.values = values
12+
13+
def __len__(self):
14+
return len(self.values)
15+
16+
def __getitem__(self, key):
17+
return self.values[key]
18+
19+
def __setitem__(self, key, value):
20+
self.values[key] = value
21+
22+
def __delitem__(self, key):
23+
del self.values[key]
24+
25+
def __iter__(self):
26+
return iter(self.values)
27+
28+
def __reversed__(self):
29+
return FunctionalList(reversed(self.values))
30+
31+
def append(self, value):
32+
self.values.append(value)
33+
34+
def head(self):
35+
# 获取第一个元素
36+
return self.values[0]
37+
38+
def tail(self):
39+
# 获取第一个元素之后的所有元素
40+
return self.values[1:]
41+
42+
def init(self):
43+
# 获取最后一个元素之前的所有元素
44+
return self.values[:-1]
45+
46+
def last(self):
47+
# 获取最后一个元素
48+
return self.values[-1]
49+
50+
def drop(self, n):
51+
# 获取所有元素,除了前N个
52+
return self.values[n:]
53+
54+
def take(self, n):
55+
# 获取前N个元素
56+
return self.values[:n]
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: UTF-8 -*-
3+
4+
class FunctionalList:
5+
''' 实现了内置类型list的功能,并丰富了一些其他方法: head, tail, init, last, drop, take'''
6+
7+
def __init__(self, values=None):
8+
if values is None:
9+
self.values = []
10+
else:
11+
self.values = values
12+
13+
def __len__(self):
14+
return len(self.values)
15+
16+
def __getitem__(self, key):
17+
return self.values[key]
18+
19+
def __setitem__(self, key, value):
20+
self.values[key] = value
21+
22+
def __delitem__(self, key):
23+
del self.values[key]
24+
25+
def __iter__(self):
26+
return iter(self.values)
27+
28+
def __reversed__(self):
29+
return FunctionalList(reversed(self.values))
30+
31+
def append(self, value):
32+
self.values.append(value)
33+
34+
def head(self):
35+
# 获取第一个元素
36+
return self.values[0]
37+
38+
def tail(self):
39+
# 获取第一个元素之后的所有元素
40+
return self.values[1:]
41+
42+
def init(self):
43+
# 获取最后一个元素之前的所有元素
44+
return self.values[:-1]
45+
46+
def last(self):
47+
# 获取最后一个元素
48+
return self.values[-1]
49+
50+
def drop(self, n):
51+
# 获取所有元素,除了前N个
52+
return self.values[n:]
53+
54+
def take(self, n):
55+
# 获取前N个元素
56+
return self.values[:n]

Code/Python11Code/.idea/Python11Code.iml

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python11Code/.idea/inspectionProfiles/profiles_settings.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Code/Python11Code/.idea/misc.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)