(S) Class Methods

Class Methods

  • Metody klasowe nie są powiązane z poszczególnymi instancjami klasy, a samą klasą.
Przykładowe użycie Class Methods:


class Device:
    DEVICES_TYPE = ["cisco_iosxe", "cisco_ios"]
    class_attributes = 0

    def __init__(self, name, hostname, ios_type) -> None:
        self.name = name
        self.hostname = hostname
        self.ios_type = ios_type
        Device.class_attributes += 1

    def __repr__(self) -> str:
        return f"<Device object({self.name}, {self.hostname}, {self.ios_type})>"

    @classmethod # Metoda klasy tworząca pre-definiowany obiekt.
    def cisco_iosxe(cls, name, hostname):
        return cls(name, hostname, cls.DEVICES_TYPE[0])

    @classmethod
    def cisco_ios(cls, name, hostname):
        return cls(name, hostname, cls.DEVICES_TYPE[1])

    @classmethod # Metoda klasy zwracająca ilość stworzonych obiektów.
    def count(cls):
        return cls.class_attributes



if __name__ == "__main__":
    rkkr_lab1 = Device("RKKR-LAB-1", "192.168.1.1", "cisco_iosxe")
    print(rkkr_lab1)
    rkkr_lab2 = Device.cisco_ios("RKKR-LAB-2", "192.168.1.2")
    print(rkkr_lab2)
    print(Device.count()


# Wydruk:
# <Device object(RKKR-LAB-1, 192.168.1.1, cisco_iosxe)>
# <Device object(RKKR-LAB-2, 192.168.1.2, cisco_ios)>
# 2

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

1 Response

  1. 10 maja 2020

    […] Link do przykładowego użycia Class Methods […]

Dodaj komentarz