TelenkovDmitry 8 月之前
父节点
当前提交
d661207878
共有 1 个文件被更改,包括 164 次插入6 次删除
  1. 164 6
      courses/python_oop/method.py

+ 164 - 6
courses/python_oop/method.py

@@ -1,4 +1,4 @@
-
+import math
 
 class Cat:
 
@@ -24,8 +24,171 @@ class Cat:
     def new_method(self):
         pass
 
+class Point:
+
+    list_points = []
+
+    def __init__(self, x, y) -> None:
+        self.move_to(x, y)
+        Point.list_points.append(self)
+
+    def move_to(self, x, y):
+        self.x = x
+        self.y = y
+
+    def go_home(self):
+        self.move_to(0, 0)
+
+    def print_point(self):
+        print(f"Точка с координатами ({self.x}, {self.y})")
+
+    def calc_distance(self, another_point):
+        if not isinstance(another_point, Point):
+            raise ValueError("Аргумент должен принадлежать классу Точка")
+        return math.sqrt((self.x - another_point.x)**2 + (self.y -another_point.y)**2)
+
+class Numbers:
+
+    def __init__(self, *args) -> None:
+        self.values = []
+        self.values.extend(args)
+
+    def add_number(self, val):
+        self.values.append(val)
+
+    def get_positive(self):
+        return [x for x in self.values if x > 0]
+
+    def get_negative(self):
+        return [x for x in self.values if x < 0]
+
+    def get_zeroes(self):
+        return [x for x in self.values if x == 0]
+
+
+class Stack:
+    def __init__(self):
+        self.values = []
+
+    def push(self, value):
+        self.values.append(value)
+
+    def pop(self):
+        if not self.values:
+            print("Empty Stack")
+        else:
+            return self.values.pop()
+
+    def peek(self):
+        if not self.values:
+            print("Empty Stack")
+            return None
+        return self.values[-1]
+    
+    def is_empty(self):
+        return not bool(self.values)
+
+    def size(self):
+        return len(self.values)
+
+class Worker:
+    def __init__(self, name, salary, gender, passport):
+        self.name = name
+        self.salary = salary
+        self.gender = gender
+        self.passport = passport
+
+    def get_info(self):
+        print(f"Worker {self.name}; passport-{self.passport}")
+
+
+class CustomLabel:
+    def __init__(self, text, **kw):
+        self.text = text
+        for name, value in kw.items():
+            setattr(self, name, value)
+
+    def config(self, **kw):
+        for name, value in kw.items():
+            setattr(self, name, value)
+        
+
 
 def main():
+
+    """CustomLabel"""
+    label1 = CustomLabel(text="Hello Python", fg="#eee", bg="#333")
+    label2 = CustomLabel(text="Username")
+    label3 = CustomLabel(text="Password", font=("Comic Sans MS", 24, "bold"), bd=20, bg='#ffaaaa')
+    label4 = CustomLabel(text="Hello", bd=20, bg='#ffaaaa')
+    label5 = CustomLabel(text="qwwerty", a=20, b='#ffaaaa', r=[3, 4, 5, 6], p=32)
+
+    assert label1.__dict__ == {'text': 'Hello Python', 'fg': '#eee', 'bg': '#333'}
+    assert label2.__dict__ == {'text': 'Username'}
+    assert label3.__dict__ == {'text': 'Password', 'font': ('Comic Sans MS', 24, 'bold'), 'bd': 20, 'bg': '#ffaaaa'}
+    assert label4.__dict__ == {'text': 'Hello', 'bd': 20, 'bg': '#ffaaaa'}
+    assert label5.__dict__ == {'text': 'qwwerty', 'a': 20, 'b': '#ffaaaa', 'r': [3, 4, 5, 6], 'p': 32}
+
+    print(label1.__dict__)
+    print(label2.__dict__)
+    print(label3.__dict__)
+    print(label4.__dict__)
+    print(label5.__dict__)
+
+    label4.config(color='red', bd=100)
+    label5.config(color='red', bd=100, a=32, b=432, p=100, z=432)
+
+    assert label4.__dict__ == {'text': 'Hello', 'bd': 100, 'bg': '#ffaaaa', 'color': 'red'}
+    assert label5.__dict__ == {'text': 'qwwerty', 'a': 32, 'b': 432, 'r': [3, 4, 5, 6], 'p': 100,
+                                'color': 'red', 'bd': 100, 'z': 432}
+
+    """Class Numbers"""
+    '''
+    num = Numbers(1, 2, -3, -4, 5)
+    num.get_values()
+    print(num.get_positive())
+    '''
+
+    """Class Stack"""
+    # stack = Stack()
+    # stack.peek()
+    # print(stack.is_empty())
+    
+    """Worker"""
+    """
+    persons= [
+    ('Allison Hill', 334053, 'M', '1635644202'),
+    ('Megan Mcclain', 191161, 'F', '2101101595'),
+    ('Brandon Hall', 731262, 'M', '6054749119'), 
+    ('Michelle Miles', 539898, 'M', '1355368461'),
+    ('Donald Booth', 895667, 'M', '7736670978'), 
+    ('Gina Moore', 900581, 'F', '7018476624'),
+    ('James Howard', 460663, 'F', '5461900982'), 
+    ('Monica Herrera', 496922, 'M', '2955495768'),
+    ('Sandra Montgomery', 479201, 'M', '5111859731'), 
+    ('Amber Perez', 403445, 'M', '0602870126')
+    ]
+
+
+    # workers_objects = [Worker('Bob Moore', 330000, 'M', '1635777202')]
+    
+    workers_objects = [Worker(*x) for x in persons]
+    
+    for worker in workers_objects:
+        worker.get_info()
+    """
+
+
+  
+
+
+
+
+    # print(persons[0][1])
+
+    # for person in persons:
+    #     workers_objects.append('')
+    
     # cat = Cat()
     # cat.show_breed()
 
@@ -36,11 +199,6 @@ def main():
     # tom.set_value('Tom')
     # tom.show_name()
 
-    leo = SoccerPlayer('Leo', 'Messi')
-    print(leo.__dict__)
-    assert isinstance(leo, SoccerPlayer)
-
-    assert leo.__dict__ == {'name': 'Leo', 'surname': 'Messi', 'goals': 0, 'assists': 0}
     # leo.score(700)
     # assert leo.goals == 700
     # leo.make_assist(500)