1. 程式人生 > >Python3 系列之 面向對象篇

Python3 系列之 面向對象篇

pri count() get 面向 obj pie sel 基本 ins

面向對象的三大特性:繼承、封裝和多態

Python 做到膠水語言,當然也支持面向對象的編程模式。

封裝

class UserInfo(object):
    lv = 5

    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    def get_account(self):
        return self.__account

    @classmethod
    def get_name(cls):
        return cls.lv

    @property
    def get_age(self):
        return self._age


if __name__ == "__main__":
    userinfo = UserInfo("hippie", 26, 123456)
    print(dir(userinfo))
    print(userinfo.__dict__)
    print(userinfo._age)
    print(userinfo.get_account())
    print(userinfo._UserInfo__account)
    print(UserInfo.lv)
    print(userinfo.get_age)

繼承

class UserInfo(object):
    lv = 5

    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account

    @property
    def get_account(self):
        return self.__account


class UserInfo2(UserInfo):

    @property
    def get_account(self):
        return super().get_account + 10


if __name__ == "__main__":
    a = UserInfo("hippie", 26, 123456)
    print(a.get_account)

    b = UserInfo2("hippie", 26, 123456)
    print(b.get_account)

    print(isinstance(a, UserInfo))
    print(isinstance(a, UserInfo2))

多態

class User(object):
    def __init__(self, name):
        self.name = name

    def printUser(self):
        print(self.name)


class UserVip(User):
    def printUser(self):
        print("Hello VIP:" + self.name)


class UserGeneral(User):
    def printUser(self):
        print("Hello User:" + self.name)


if __name__ == "__main__":
    vip = UserVip("hippie")
    vip.printUser()

    vip = UserGeneral("jock")
    vip.printUser()

總結

封裝、繼承和多態是面向對象中的重要思想,對於 Python 這種高級語言,雖然很多地方從語法上可以不用面向對象的思想,但是對於項目構建來說,面向對象是基本要求,這樣做顯然是很有必要的。

相關參考

  • Python 入門教程:【草根學 Python (基於Python3.6)】

Python3 系列之 面向對象篇