diff --git a/object_oriented/advance/pycode/argument/args.py b/object_oriented/advance/pycode/argument/args.py index 3ab513d9..de8732f3 100644 --- a/object_oriented/advance/pycode/argument/args.py +++ b/object_oriented/advance/pycode/argument/args.py @@ -4,16 +4,16 @@ try: - argv : List[str] = sys.argv[1:] - opts, args = getopt(argv, 'c:', ['create=']) + argv: List[str] = sys.argv[1:] + opts, args = getopt(argv, "c:", ["create="]) except GetoptError as e: raise e for opt, arg in opts: - if opt in ['-c', '--create']: - with open(arg, 'w') as file: - res = file.write('Berhasil membuat berkas dengan CLI...') + if opt in ["-c", "--create"]: + with open(arg, "w") as file: + res = file.write("Berhasil membuat berkas dengan CLI...") file.close() else: ... diff --git a/object_oriented/advance/pycode/decorators/contoh_decorators1.py b/object_oriented/advance/pycode/decorators/contoh_decorators1.py index dd87f22e..b7c3da22 100644 --- a/object_oriented/advance/pycode/decorators/contoh_decorators1.py +++ b/object_oriented/advance/pycode/decorators/contoh_decorators1.py @@ -1,5 +1,5 @@ # Contoh Decorator 1 -def menyapa(nama : str) -> str: +def menyapa(nama: str) -> str: """Contoh pada decorator yang satu ini, kita hanya cukup satu fungsi yang mengembalikan nilai Uppercase :param nama: masukan bellshade pada parameter nama @@ -12,4 +12,4 @@ def menyapa(nama : str) -> str: def test_menyapa(): - assert 'BELLSHADE' == menyapa('bellshade') + assert "BELLSHADE" == menyapa("bellshade") diff --git a/object_oriented/advance/pycode/decorators/contoh_decorators2.py b/object_oriented/advance/pycode/decorators/contoh_decorators2.py index bb059432..c7b855be 100644 --- a/object_oriented/advance/pycode/decorators/contoh_decorators2.py +++ b/object_oriented/advance/pycode/decorators/contoh_decorators2.py @@ -2,17 +2,17 @@ # Contoh Decorator 2 -def wpu(str1 : str) -> str: +def wpu(str1: str) -> str: # Fungsi wpu yang mengembalikan nilai string upper return str1.upper() -def terbuka(str2 : str) -> str: +def terbuka(str2: str) -> str: # Fungsi terbuka yang mengembalikan nilai string lower return str2.lower() -def bellshade(func : Callable) -> str: +def bellshade(func: Callable) -> str: """ Fungsi ini akan menampung fungsi dari luar fungsi bellshade :param func: parameter fungsi yang akan menampung fungsi lainnya @@ -27,8 +27,8 @@ def bellshade(func : Callable) -> str: def test_func_upper(): - assert 'HALO SOBAT BELLSHADE!!!' == bellshade(wpu) + assert "HALO SOBAT BELLSHADE!!!" == bellshade(wpu) def test_func_lower(): - assert 'halo sobat bellshade!!!' == bellshade(terbuka) + assert "halo sobat bellshade!!!" == bellshade(terbuka) diff --git a/object_oriented/advance/pycode/decorators/contoh_decorators3.py b/object_oriented/advance/pycode/decorators/contoh_decorators3.py index 89024540..0e001e21 100644 --- a/object_oriented/advance/pycode/decorators/contoh_decorators3.py +++ b/object_oriented/advance/pycode/decorators/contoh_decorators3.py @@ -2,7 +2,7 @@ # Contoh Decorator 3 -def users(nama : str) -> Callable: +def users(nama: str) -> Callable: """ Fungsi ini hanya mengembalikan sebuah fungsi :param name: Parameter nama dari fungsi users @@ -12,19 +12,19 @@ def users(nama : str) -> Callable: 'Udin sedang belajar: Python' """ - def belajar(str1 : Callable) -> str: + def belajar(str1: Callable) -> str: """ Fungsi ini akan membungkus parameter dari users """ # Return ini mengembalikan nilai untuk fungsi (belajar) - return f'{nama} sedang belajar: {str1}' + return f"{nama} sedang belajar: {str1}" # Di return terluar, kita akan mengembalikan nilai berupa fungsi (belajar) return belajar def test_input_user(): - name = 'Udin' + name = "Udin" belajar = users(name) - assert 'Udin sedang belajar: Python' == belajar('Python') + assert "Udin sedang belajar: Python" == belajar("Python") diff --git a/object_oriented/advance/pycode/decorators/decorators.py b/object_oriented/advance/pycode/decorators/decorators.py index 71858200..b2d34b3c 100644 --- a/object_oriented/advance/pycode/decorators/decorators.py +++ b/object_oriented/advance/pycode/decorators/decorators.py @@ -2,7 +2,7 @@ # Decorators -def bellshade(func : Callable) -> Callable: +def bellshade(func: Callable) -> Callable: """ Fungsi ini akan kita jadikan sebagai decoratord decorators (@) Saat Mengeksekusi, kita cukup panggil Fungsi wpu @@ -10,14 +10,14 @@ def bellshade(func : Callable) -> Callable: 'Selamat datang Bellshade' """ - def wrap(str1 : str) -> str: - return f'Selamat datang {str1}' + def wrap(str1: str) -> str: + return f"Selamat datang {str1}" return wrap # <- Mengembalikan fungsi (wrap) sebagai fungsi terdalam (bellshade) @bellshade -def wpu(str1 : str) -> str: +def wpu(str1: str) -> str: return str1 @@ -26,4 +26,4 @@ def test_decorators(): @bellshade def wpu(str1): return str1 - assert str1 == 'Bellshade' + assert str1 == "Bellshade" diff --git a/object_oriented/advance/pycode/decorators/decorators_chaining.py b/object_oriented/advance/pycode/decorators/decorators_chaining.py index e75e4116..c5dba2ee 100644 --- a/object_oriented/advance/pycode/decorators/decorators_chaining.py +++ b/object_oriented/advance/pycode/decorators/decorators_chaining.py @@ -2,27 +2,31 @@ # DECORATORS CHAINING -def add(func : Callable) -> Callable: +def add(func: Callable) -> Callable: """ Fungsi ini akan memanggil fungsi lain dan mengembalikan fungsi >>> num1() 1250 """ + def wrap() -> int: x = func() return x + x + return wrap -def add_quadrat(func : Callable) -> Callable: +def add_quadrat(func: Callable) -> Callable: """ Fungsi ini akan memanggil fungsi lain dan mengembalikan fungsi >>> num2() 2500 """ + def wrap() -> int: x = func() return x**2 + return wrap diff --git a/object_oriented/advance/pycode/decorators/decorators_return.py b/object_oriented/advance/pycode/decorators/decorators_return.py index 632c1ea1..c4419062 100644 --- a/object_oriented/advance/pycode/decorators/decorators_return.py +++ b/object_oriented/advance/pycode/decorators/decorators_return.py @@ -1,7 +1,7 @@ from typing import Union, Callable -def openseries(func : Callable) -> Callable: +def openseries(func: Callable) -> Callable: """ Fungsi openseries akan di jadikan sebagai decorators yang mengembalikan fungsi Sekarang coba jalankan fungsi add yang di decorators fungsi openseries @@ -10,16 +10,18 @@ def openseries(func : Callable) -> Callable: >>> add(a, b) '(5 + 9): 14' """ - def wrap(*args : Union[int, float]) -> Union[int, float]: + + def wrap(*args: Union[int, float]) -> Union[int, float]: return_val = func(*args) return return_val + return wrap @openseries -def add(a : Union[int, float], b : Union[int, float]) -> Union[int, str]: - return f'({a} + {b}): {a + b}' +def add(a: Union[int, float], b: Union[int, float]) -> Union[int, str]: + return f"({a} + {b}): {a + b}" def test_openseries_add_func(): - assert add(5, 9) == '(5 + 9): 14' + assert add(5, 9) == "(5 + 9): 14" diff --git a/object_oriented/advance/pycode/generators/generators_for.py b/object_oriented/advance/pycode/generators/generators_for.py index 66811824..508d15bf 100644 --- a/object_oriented/advance/pycode/generators/generators_for.py +++ b/object_oriented/advance/pycode/generators/generators_for.py @@ -3,7 +3,7 @@ # GENERATORS -def Generators(func : Callable) -> Callable: +def Generators(func: Callable) -> Callable: """ Fungsi ini akan menerima parameter dari user untuk melakukan generate ubah bagian range function menjadi [for i in range(random.randint(5,35))] @@ -17,10 +17,11 @@ def Generators(func : Callable) -> Callable: @wraps(func) def start() -> int: - i : int = 1 + i: int = 1 for i in range(13, 50): - i**func() + i ** func() return i + return start @@ -38,5 +39,5 @@ def coba1(): return 7 -if __name__ == '__main__': +if __name__ == "__main__": print(coba1()) diff --git a/object_oriented/advance/pycode/generators/generators_while.py b/object_oriented/advance/pycode/generators/generators_while.py index d4d81fb7..63d7bb36 100644 --- a/object_oriented/advance/pycode/generators/generators_while.py +++ b/object_oriented/advance/pycode/generators/generators_while.py @@ -14,7 +14,7 @@ class Generators: 2187 """ - def __init__(self, target_int : Union[int, float], max_repeat : int = 5) -> None: + def __init__(self, target_int: Union[int, float], max_repeat: int = 5) -> None: self.tar_mul = target_int self.target_repeat_max = max_repeat @@ -27,7 +27,7 @@ def start_generate(self) -> None: try: while True: self.indeks += 1 - self.res = self.indeks ** self.tar_mul + self.res = self.indeks**self.tar_mul print(self.res) if self.indeks == self.target_repeat_max: @@ -45,5 +45,5 @@ def test_generate_dengan_attribute(): app = Generators(7) -if __name__ == '__main__': +if __name__ == "__main__": app() diff --git a/object_oriented/advance/pycode/magic_methods/Mmethod.py b/object_oriented/advance/pycode/magic_methods/Mmethod.py index e865afd2..c18af3ca 100644 --- a/object_oriented/advance/pycode/magic_methods/Mmethod.py +++ b/object_oriented/advance/pycode/magic_methods/Mmethod.py @@ -1,6 +1,6 @@ class Pastikom: - def __init__(self, yourname : str, email : str) -> None: + def __init__(self, yourname: str, email: str) -> None: """Magic Method Kelas Pastikom memiliki 2 parameter dan/atau argumen :param yourname: tuliskan nama mu di parameter pertama @@ -16,14 +16,14 @@ def __init__(self, yourname : str, email : str) -> None: def __repr__(self) -> str: """Fungsi representasi nilai parameter dan/atau argumen""" - return f'Nama: { self.name }\nEmail: { self.email }' + return f"Nama: { self.name }\nEmail: { self.email }" def __del__(self) -> str: """Fungsi informasi jika ada nilai parameter dan/atau argumen yang terhapus""" return "Oh tidaaaak! Data sudah terhapus :'(" -nama : str = "Bellshade" -email : str = "bellshade@pastikom.id" -if __name__ == '__main__': +nama: str = "Bellshade" +email: str = "bellshade@pastikom.id" +if __name__ == "__main__": Pastikom(nama, email) diff --git a/object_oriented/advance/pycode/metaclass/composite.py b/object_oriented/advance/pycode/metaclass/composite.py index 6433dafa..b02606ac 100644 --- a/object_oriented/advance/pycode/metaclass/composite.py +++ b/object_oriented/advance/pycode/metaclass/composite.py @@ -2,7 +2,7 @@ from src import IJurusan # Logging Config -logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) +logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG) class Informatika(IJurusan): @@ -62,10 +62,10 @@ def data_jurusan(self, mahasiswa_jurusan): self.mahasiswa += mahasiswa_jurusan.jumlah_mahasiswa() def jumlah_mahasiswa(self): - logging.debug(f'Jumlah jurusan dasar: {self.jurusan_dasar}') + logging.debug(f"Jumlah jurusan dasar: {self.jurusan_dasar}") for jurusan in self.jumlah_jurusan: - logging.debug(f'{type(jurusan).__name__}: {jurusan.jumlah_mahasiswa()}') - logging.debug(f'Total mahasiswa: {self.mahasiswa}') + logging.debug(f"{type(jurusan).__name__}: {jurusan.jumlah_mahasiswa()}") + logging.debug(f"Total mahasiswa: {self.mahasiswa}") def test_insert_data_informatika(): @@ -78,7 +78,7 @@ def test_insert_data_management(): assert 50 == mhs.jumlah_mahasiswa() -if __name__ == '__main__': +if __name__ == "__main__": p1 = Informatika(30) p2 = Management(50) jurusan = Jurusan(2) diff --git a/object_oriented/advance/pycode/metaclass/factory.py b/object_oriented/advance/pycode/metaclass/factory.py index 8399b98a..419f30b0 100644 --- a/object_oriented/advance/pycode/metaclass/factory.py +++ b/object_oriented/advance/pycode/metaclass/factory.py @@ -14,14 +14,15 @@ class Mahasiswa(IPeople): >>> mhs = Mahasiswa() >>> mhs.major() 'Mahasiswa UNPAS' -""" - __nama: str = 'Bellshade' - __posisi: str = 'Mahasiswa UNPAS' + """ + + __nama: str = "Bellshade" + __posisi: str = "Mahasiswa UNPAS" def __call__(self) -> None: - logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) - logging.debug(f'Nama: {self.__nama}') - logging.debug(f'Posisi: {self.major()}') + logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG) + logging.debug(f"Nama: {self.__nama}") + logging.debug(f"Posisi: {self.major()}") def major(self): return __class__.__posisi @@ -37,13 +38,14 @@ class Dosen(IPeople): >>> mhs.major() 'Dosen UNPAS' """ - __nama: str = 'Sandhika Galih' - __posisi: str = 'Dosen UNPAS' + + __nama: str = "Sandhika Galih" + __posisi: str = "Dosen UNPAS" def __call__(self): - logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) - logging.debug(f'Nama: {self.__nama}') - logging.debug(f'Posisi: {self.major()}') + logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG) + logging.debug(f"Nama: {self.__nama}") + logging.debug(f"Posisi: {self.major()}") def major(self): return __class__.__posisi @@ -53,27 +55,27 @@ class PeopleFactory: @staticmethod def create_people(role_people): - if role_people[0].lower() == 'mahasiswa': + if role_people[0].lower() == "mahasiswa": return mhs() - elif role_people[0].lower() == 'dosen': + elif role_people[0].lower() == "dosen": return dosen() else: - logging.warning('Argument tidak dikenal!') + logging.warning("Argument tidak dikenal!") def test_major_mahasiswa_factories(): mhs1 = Mahasiswa() - assert mhs1.major() == 'Mahasiswa UNPAS' + assert mhs1.major() == "Mahasiswa UNPAS" mhs = Mahasiswa() dosen = Dosen() -if __name__ == '__main__': +if __name__ == "__main__": prompt = sys.argv[1:] try: if len(prompt) >= 0: PeopleFactory.create_people(prompt) except IndexError: - logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.WARN) - logging.warning('Argument mahasiswa atau dosen tidak terdeteksi!') + logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.WARN) + logging.warning("Argument mahasiswa atau dosen tidak terdeteksi!") diff --git a/object_oriented/advance/pycode/metaclass/proxy.py b/object_oriented/advance/pycode/metaclass/proxy.py index b2af0751..8f32505b 100644 --- a/object_oriented/advance/pycode/metaclass/proxy.py +++ b/object_oriented/advance/pycode/metaclass/proxy.py @@ -4,44 +4,44 @@ # Logging Config -logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) +logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG) class Mahasiswa(IUniv): - """ Kelas ini tidak memiliki parameter tetapi memiliki fungxi + """Kelas ini tidak memiliki parameter tetapi memiliki fungxi :func division: Fungsi untuk memberikan informasi >>> guest = Mahasiswa() >>> guest.division() """ def division(self): - logging.debug('Mahasiswa') + logging.debug("Mahasiswa") class Dosen(IUniv): - """ Kelas ini tidak memiliki parameter tetapi memiliki fungxi + """Kelas ini tidak memiliki parameter tetapi memiliki fungxi :func division: Fungsi untuk memberikan informasi >>> guest = Dosen() >>> guest.division() """ def division(self): - logging.debug('Dosen') + logging.debug("Dosen") class Rektor(IUniv): - """ Kelas ini tidak memiliki parameter tetapi memiliki fungxi + """Kelas ini tidak memiliki parameter tetapi memiliki fungxi :func division: Fungsi untuk memberikan informasi >>> guest = Rektor() >>> guest.division() """ def division(self): - logging.debug('Rektor') + logging.debug("Rektor") class UnivProxy(IUniv): - """ Kelas ini tidak akan menerima parameter apapun, + """Kelas ini tidak akan menerima parameter apapun, kelas ini hanya terdiri dari cunstructor init yang hanya memiliki attribute kelas. :attribute dosen: Menginstansiasikan kelas Dosen di Pattern @@ -49,6 +49,7 @@ class UnivProxy(IUniv): >>> proxy = UnivProxy() >>> proxy() """ + def __init__(self): self.dosen = Dosen() self.rektor = Rektor() @@ -58,13 +59,13 @@ def __call__(self): self.division() def division(self): - logging.debug('ProxyPattern Functionality.\n==========') + logging.debug("ProxyPattern Functionality.\n==========") self.dosen.division() self.rektor.division() self.mahasiswa.division() - logging.debug('ProxyPattern Functionality.\n==========') + logging.debug("ProxyPattern Functionality.\n==========") -if __name__ == '__main__': +if __name__ == "__main__": proxy: Callable = UnivProxy() proxy() diff --git a/object_oriented/advance/pycode/metaclass/singleton.py b/object_oriented/advance/pycode/metaclass/singleton.py index 79e4c0e9..e528887d 100644 --- a/object_oriented/advance/pycode/metaclass/singleton.py +++ b/object_oriented/advance/pycode/metaclass/singleton.py @@ -1,7 +1,7 @@ import logging from src import IMahasiswa -logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) +logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG) class SingletonMahasiswa(IMahasiswa): @@ -20,18 +20,18 @@ class SingletonMahasiswa(IMahasiswa): @staticmethod def get_instance(self): - """ Fungsi ini mengambil __instance None, jika instance masih + """Fungsi ini mengambil __instance None, jika instance masih bertipe None maka akan di isi oleh instance object pertama kali karena pola Singleton ini membatasi kegunaan instance object. """ if SingletonMahasiswa.__instance is None: - SingletonMahasiswa('Bellshade', 'Helper') + SingletonMahasiswa("Bellshade", "Helper") else: return SingletonMahasiswa.__instance def __init__(self, nama, jurusan): if SingletonMahasiswa.__instance is not None: - raise Exception('Singleton tidak dapat membuat instance lebih dari sekali!') + raise Exception("Singleton tidak dapat membuat instance lebih dari sekali!") else: self.nama = nama self.jurusan = jurusan @@ -42,12 +42,12 @@ def log_instance(self): """ Fungsi ini merupakan implementasi dari kelas Abstrak IMahasiswa """ - logging.debug(f'Nama: {SingletonMahasiswa.__instance.nama}') - logging.debug(f'Jurusan: {SingletonMahasiswa.__instance.jurusan}') + logging.debug(f"Nama: {SingletonMahasiswa.__instance.nama}") + logging.debug(f"Jurusan: {SingletonMahasiswa.__instance.jurusan}") -if __name__ == '__main__': - p = SingletonMahasiswa('Sandhika Galih', 'Dosen Informatika') - p2 = SingletonMahasiswa('Tono', 'Mahasiswa Informatika') +if __name__ == "__main__": + p = SingletonMahasiswa("Sandhika Galih", "Dosen Informatika") + p2 = SingletonMahasiswa("Tono", "Mahasiswa Informatika") p.log_instance(p) p2.log_instance(p2) diff --git a/object_oriented/advance/pycode/metaclass/src/__init__.py b/object_oriented/advance/pycode/metaclass/src/__init__.py index 5fc439f5..3522b6d7 100644 --- a/object_oriented/advance/pycode/metaclass/src/__init__.py +++ b/object_oriented/advance/pycode/metaclass/src/__init__.py @@ -8,7 +8,7 @@ class IPeople(metaclass=ABCMeta): @abstractstaticmethod def major(self) -> str: - return '' + return "" """ Interface IPeople Method """ @@ -17,7 +17,7 @@ class IUniv(metaclass=ABCMeta): @abstractstaticmethod def division(self): - """ Interface IUniv Method """ + """Interface IUniv Method""" # SINGLETON DESIGN PATTERN @@ -25,7 +25,7 @@ class IMahasiswa(metaclass=ABCMeta): @abstractstaticmethod def log_instance(self): - """ Implement in child Class""" + """Implement in child Class""" # COMPOSITE DESIGN PATTERN @@ -33,7 +33,7 @@ class IJurusan(metaclass=ABCMeta): @abstractmethod def __init__(self, mahasiswa): - """ Implement in child Class """ + """Implement in child Class""" @abstractstaticmethod def jumlah_mahasiswa(self): diff --git a/object_oriented/advance/pycode/type_hint/hinter.py b/object_oriented/advance/pycode/type_hint/hinter.py index fd9be83d..af27e17f 100644 --- a/object_oriented/advance/pycode/type_hint/hinter.py +++ b/object_oriented/advance/pycode/type_hint/hinter.py @@ -1,5 +1,5 @@ # variable with type hint -nama: str = 'Bellshade' +nama: str = "Bellshade" # definisi function with type hint with return function @@ -20,10 +20,10 @@ def id(nama: str) -> str: # testing code def test_runner_code(): - nama = 'Bellshade' - assert user(nama) == 'Bellshade' + nama = "Bellshade" + assert user(nama) == "Bellshade" # running -if __name__ == '__main__': +if __name__ == "__main__": user(nama)