|
@@ -0,0 +1,198 @@
|
|
|
+
|
|
|
+class DepartmentIT:
|
|
|
+ PYTHON_DEV = 3
|
|
|
+ GO_DEV = 3
|
|
|
+ REACT_DEV = 2
|
|
|
+
|
|
|
+ def info(self):
|
|
|
+ print(self.PYTHON_DEV, self.GO_DEV, self.REACT_DEV)
|
|
|
+
|
|
|
+ @property
|
|
|
+ def info_prop(self):
|
|
|
+ print(self.PYTHON_DEV, self.GO_DEV, self.REACT_DEV)
|
|
|
+
|
|
|
+
|
|
|
+class MyClass:
|
|
|
+ class_attribute = 'I am a class attribute'
|
|
|
+
|
|
|
+ def __init__(self) -> None:
|
|
|
+ self.instance_attribute = 'I am an instatnce attribute'
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def create_attr(cls, attr_name, attr_value):
|
|
|
+ setattr(cls, attr_name, attr_value)
|
|
|
+
|
|
|
+
|
|
|
+class Container:
|
|
|
+ items = []
|
|
|
+
|
|
|
+ def add_item(self, value):
|
|
|
+ # self.items.append(value)
|
|
|
+ self.items = [value] + self.items
|
|
|
+
|
|
|
+
|
|
|
+class Robot:
|
|
|
+
|
|
|
+ population = 0
|
|
|
+ my_list = []
|
|
|
+
|
|
|
+ def __init__(self, name) -> None:
|
|
|
+ # Robot.population += 1
|
|
|
+ self.population += 1
|
|
|
+ self.name = name
|
|
|
+ self.my_list.append(name)
|
|
|
+ print(f'Робот {self.name} был создан')
|
|
|
+
|
|
|
+ def destroy(self):
|
|
|
+ print(f'Робот {self.name} был уничтожен')
|
|
|
+ # Robot.population -= 1
|
|
|
+ self.population -= 1
|
|
|
+
|
|
|
+ def say_hello(self):
|
|
|
+ print(f'Робот {self.name} приветствует тебя, особь человеческого рода')
|
|
|
+
|
|
|
+ def how_many_new(self):
|
|
|
+ print(f'{self.population}, вот сколько нас еще осталось')
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def how_many(cls):
|
|
|
+ # print(f'{cls.population}, вот сколько нас еще осталось')
|
|
|
+ print(f'{cls.population}, вот сколько нас еще осталось')
|
|
|
+
|
|
|
+
|
|
|
+class User:
|
|
|
+
|
|
|
+ def __init__(self, name, role) -> None:
|
|
|
+ self.name = name
|
|
|
+ self.role = role
|
|
|
+
|
|
|
+
|
|
|
+class Access:
|
|
|
+
|
|
|
+ __access_list = ['admin', 'developer']
|
|
|
+
|
|
|
+ def __init__(self) -> None:
|
|
|
+ pass
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def __check_access(role):
|
|
|
+ return True if role in Access.__access_list else False
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_access(user: User):
|
|
|
+ if not isinstance(user, User):
|
|
|
+ print('AccessTypeError')
|
|
|
+ return
|
|
|
+ if Access.__check_access(user.role):
|
|
|
+ print(f'User {user.name}: success')
|
|
|
+ else:
|
|
|
+ print(f'AccessDenied')
|
|
|
+
|
|
|
+
|
|
|
+class BankAccount:
|
|
|
+
|
|
|
+ bank_name = 'Tinkoff Bank'
|
|
|
+ address = 'Москва, ул. 2-я Хуторская, д. 38А'
|
|
|
+
|
|
|
+ def __init__(self, name, balance) -> None:
|
|
|
+ self.name = name
|
|
|
+ self.balance = balance
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def create_account(cls, name, balance):
|
|
|
+ return cls(name, balance)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def bank_info(cls):
|
|
|
+ return f"{cls.bank_name} is located in {cls.address}"
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+
|
|
|
+ oleg = BankAccount.create_account("Олег Тинкофф", 1000)
|
|
|
+ assert isinstance(oleg, BankAccount)
|
|
|
+ assert oleg.name == 'Олег Тинкофф'
|
|
|
+ assert oleg.balance == 1000
|
|
|
+ assert BankAccount.bank_info() == 'Tinkoff Bank is located in Москва, ул. 2-я Хуторская, д. 38А'
|
|
|
+
|
|
|
+ ivan = BankAccount.create_account("Ivan Reon", 50)
|
|
|
+ assert isinstance(ivan, BankAccount)
|
|
|
+ assert ivan.name == 'Ivan Reon'
|
|
|
+ assert ivan.balance == 50
|
|
|
+ print('Good')
|
|
|
+
|
|
|
+ '''
|
|
|
+ user1 = User('batya99', 'admin')
|
|
|
+ Access.get_access(user1) # печатает "User batya99: success"
|
|
|
+
|
|
|
+ zaya = User('milaya_zaya999', 'user')
|
|
|
+ Access.get_access(zaya) # печатает AccessDenied
|
|
|
+
|
|
|
+ Access.get_access(5) # печатает AccessTypeError
|
|
|
+ '''
|
|
|
+
|
|
|
+ '''
|
|
|
+ box1 = Container()
|
|
|
+ box1.add_item(2)
|
|
|
+ box1.add_item(4)
|
|
|
+
|
|
|
+
|
|
|
+ box2 = Container()
|
|
|
+ box2.add_item(5)
|
|
|
+ box2.add_item(7)
|
|
|
+
|
|
|
+ print(Container.items)
|
|
|
+ '''
|
|
|
+
|
|
|
+ '''
|
|
|
+ droid1 = Robot("R2-D2")
|
|
|
+ print(droid1.name)
|
|
|
+ print(Robot.population)
|
|
|
+ assert droid1.name == 'R2-D2'
|
|
|
+ # assert Robot.population == 1
|
|
|
+ droid1.say_hello()
|
|
|
+ Robot.how_many()
|
|
|
+ droid1.how_many_new()
|
|
|
+ droid2 = Robot("C-3PO")
|
|
|
+ assert droid2.name == 'C-3PO'
|
|
|
+ # assert Robot.population == 2
|
|
|
+ droid2.say_hello()
|
|
|
+ droid2.how_many_new()
|
|
|
+ Robot.how_many()
|
|
|
+ droid1.how_many_new()
|
|
|
+ droid1.destroy()
|
|
|
+ # assert Robot.population == 1
|
|
|
+ droid2.destroy()
|
|
|
+ # assert Robot.population == 0
|
|
|
+ Robot.how_many()
|
|
|
+ '''
|
|
|
+
|
|
|
+
|
|
|
+ '''
|
|
|
+ example_1 = MyClass()
|
|
|
+ example_2 = MyClass()
|
|
|
+ example_3 = MyClass()
|
|
|
+
|
|
|
+ example_1.create_attr('new_attr', 'Hello world')
|
|
|
+
|
|
|
+ print(example_1.new_attr)
|
|
|
+ print(example_2.new_attr)
|
|
|
+ print(example_3.new_attr)
|
|
|
+ '''
|
|
|
+
|
|
|
+ '''
|
|
|
+ dep1 = DepartmentIT()
|
|
|
+ dep2 = DepartmentIT()
|
|
|
+
|
|
|
+ print(dep1.REACT_DEV)
|
|
|
+ dep1.REACT_DEV = 5
|
|
|
+ print(dep1.REACT_DEV)
|
|
|
+ print(dep2.REACT_DEV)
|
|
|
+
|
|
|
+ dep3 = DepartmentIT()
|
|
|
+ print(dep3.REACT_DEV)
|
|
|
+ '''
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|