python物件導向進階

來源:互聯網
上載者:User

標籤:log   編程   color   修改   import   物件導向   get   靜態屬性   closed   

  property 內建裝飾器函數 只在物件導向中使用

from math import piclass Circle:    def __init__(self, r):        self.r = r    @property    # 將類似屬性卻需要操作得到的一些方法偽裝成對象屬性    def perimeter(self):        return 2 * pi * self.r    @property    def area(self):        return pi * self.r ** 2circle = Circle(5)print(circle.perimeter)  # 調用方法和操作屬性相同   本質上還是方法print(circle.area)

   property 提供私人屬性的查看,修改和刪除

class Person:    def __init__(self, name):        self.__name = name    @property    def name(self):        return self.__name    @name.setter   # 修改 通過賦值來修改    def name(self, new_name):        self.__name = new_name    @name.deleter    def name(self):        del self.__namep = Person(‘zxc‘)print(p.name)  # zxcp.name = ‘zxf‘print(p.name)  # zxfdel p.name  # 這裡的del只是對應@name.deleter,主要看@name.deleter下面的方法執行了什麼# print(p.name)  # 報錯 顯示沒有name屬性

  classmethod和staticmethod

class Person:    __key = ‘人類‘    def __init__(self, name):        self.__name = name    @property    def name(self):        return self.__name    @classmethod   # 將一個方法變成類中的方法,使這個方法可以直接被類調用而不用依託對象    def change_key(cls, new_key):        cls.__key = new_keyprint(Person._Person__key)  # 人類Person.change_key(‘human‘)print(Person._Person__key)  # human# 當這個方法的操作只涉及靜態屬性的時候 就應該使用classmethod來裝飾這個方法
classmethod
class Login:    def __init__(self,name,password):        self.name = name        self.pwd = password    def login(self):        pass    @staticmethod  # 裝飾一個完全跟類和對象沒有關係的靜態方法,通過類調用    def get_usr_pwd():   # 靜態方法        usr = input(‘使用者名稱 :‘)        pwd = input(‘密碼 :‘)        Login(usr, pwd)# 一般用在完全物件導向編程的時候
staticmethod

 

python物件導向進階

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.