@@ -0,0 +1,29 @@
|
||||
class Borg:
|
||||
|
||||
def __new__(cls):
|
||||
if not hasattr(cls, '_state'):
|
||||
cls._state = {}
|
||||
instance = super(Borg, cls).__new__(cls)
|
||||
instance.__dict__ = cls._state
|
||||
return instance
|
||||
|
||||
|
||||
class SubBorg(Borg):
|
||||
pass
|
||||
|
||||
|
||||
class SubBorg2(Borg):
|
||||
pass
|
||||
|
||||
|
||||
def main():
|
||||
a = SubBorg()
|
||||
b = SubBorg()
|
||||
c = SubBorg2()
|
||||
a.attr = 10
|
||||
assert hasattr(b, 'attr') and b.attr == 10
|
||||
assert not hasattr(c, 'attr')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,29 @@
|
||||
import random
|
||||
|
||||
|
||||
def quicksort(nums, left=None, right=None):
|
||||
if left is None:
|
||||
left = 0
|
||||
if right is None:
|
||||
right = len(nums) - 1
|
||||
if right <= left:
|
||||
return
|
||||
j = left
|
||||
temp = nums[right]
|
||||
for i in range(left, right):
|
||||
if nums[i] < temp:
|
||||
nums[i], nums[j] = nums[j], nums[i]
|
||||
j += 1
|
||||
nums[j], nums[right] = nums[right], nums[j]
|
||||
quicksort(nums, left, j - 1)
|
||||
quicksort(nums, j + 1, right)
|
||||
return nums
|
||||
|
||||
|
||||
def main():
|
||||
nums = random.sample(range(100000), 100000)
|
||||
assert sorted(nums) == quicksort(nums)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user