Day15-總結

1.類中的方法

  • 1)對象方法
    怎么聲明:直接聲明在類中的函數(shù)
    怎么調用:通過對象來調用
    特點:有個指向當前對象的默認參數(shù)self巾钉;調用的時候不需要傳參
    什么時候用:實現(xiàn)函數(shù)的功能需要用對象屬性
  • 2)類方法
    怎么聲明:聲明函數(shù)前 '@classmethod'
    怎么調用:通過類來調用翘狱,'類.方法名'
    特點:有個默認參數(shù)cls,這個參數(shù)在通過類調用的時候不需要傳參砰苍;指向當前類(誰調用指向誰)
    類能做的事潦匈,cls都可以做
    什么時候用:實現(xiàn)函數(shù)的功能不需要對象屬性的前提下,需要類的字段(需要類)师骗,這個就用類方法
  • 3)靜態(tài)方法
    怎么聲明:聲明函數(shù)前加 '@staticmethod'
    怎么調用:通過類來調用历等,'類.方法名()'
    特點:無特點(沒有默認參數(shù))
    什么時候用:實現(xiàn)函數(shù)的功能既不需要對象屬性也不需要類的字段,此時使用靜態(tài)方法
class Student:
    num = 23

    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        self.stu_id = '001'

    def study(self):
        print('%s在學習' % self.name)

    # 類方法
    @classmethod
    def count(cls):
        pass
        stu2 = cls('dd', 12, 42223)
        print(stu2)
        cls.func()

    @classmethod
    def func(cls):
        pass

    @staticmethod
    def static_func():
        print('靜態(tài)方法')


stu1 = Student('ss', 18, 2222)
# 對象方法調用
stu1.study()
# 類方法調用
Student.count()
# 靜態(tài)方法調用
Student.static_func()

1.訪問權限

公開(public):屬性和方法在類的內部可以使用辟癌、可以被繼承也可以在類的外部使用
保護(protect):屬性和方法在類的內部可以使用、可以被繼承荐捻;不能在類的外部使用
私有(private):屬性和方法在類的內部可以使用黍少、不可以被繼承,也不能在類的外部使用
python中本質上所有的屬性和方法都是公開的处面,私有化是假的私有化

  • 2.私有化
    語法:在聲明屬性或者方法的時候厂置,在屬性名前或者方法名前加'';
    注意:只能'
    '開頭,不能以'__'結尾

私有化的原理:只是單純在私有屬性或者方法名前加'_類名',導致直接使用原名使用不了屬性和方法

class Person:
    num = 22
    __num1 = 24

    def __init__(self, name, age=0, gender='男'):
        self.name = name
        self.age = age
        self.gender = gender

    def eat(self, food: str):
        print('%s在吃%s' % (self.name, food))

    @classmethod
    def show_num(cls):
        print(cls.num, cls.__num1)


p1 = Person('豬皮', 22)
Person.show_num()
print(Person.num)
# print(Person._Person__num1)

1.什么時候使用getter和setter

1)getter - 希望獲取一個屬性值之前做別的事情魂角,就給這個屬性添加getter
2)setter - 希望給屬性賦值之前做點別的事情昵济,就給這個屬性添加setter

  • 2.怎么給屬性添加getter和setter
    1)怎么添加getter
    在需要添加getter的屬性前加_
    在@property后面聲明一個函數(shù),函數(shù)名和去掉的屬性名一致,并且函數(shù)需要一個返回值表示獲取屬性的值
    在外面通過不帶下劃線的屬性名去獲取對應的屬性值
    2)怎么添加setter:
    如果想要給屬性添加setter必須先給它添加getter
    @getter名.setter后面聲明函數(shù);函數(shù)名和去掉
    的屬性名一致访忿,這個函數(shù)不需要返回值瞧栗,但是需要一個參數(shù)
    在外面通過不帶下劃線的屬性名去給對應的屬性賦值
class ReadError(Exception):
    def __str__(self):
        print('該數(shù)據(jù)只讀')


class Rect:
    def __init__(self, width, length):
        self.width = width
        self.length = length
        self._area = 0
        self._perimeter = 0
        self._age = 0

    @property
    def area(self):
        return self.width*self.length

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

    @age.setter
    def age(self, value):
        if type(value) != int:
            print('數(shù)據(jù)有誤,數(shù)據(jù)類型錯誤')

        if 0 < value <= 200:
            self._age = value
        else:
            print('數(shù)據(jù)有誤')
            raise ValueError

    @area.setter
    def area(self, value):
        raise ReadError

    @property
    def perimeter(self):
        return 2*(self.length + self.width)

    @perimeter.setter
    def perimeter(self, value):
        raise ReadError


r1 = Rect(10, 20)
r1.age = 28
print(r1.age)
print(r1.area)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末海铆,一起剝皮案震驚了整個濱河市迹恐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卧斟,老刑警劉巖殴边,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異珍语,居然都是意外死亡锤岸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門板乙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來能耻,“玉大人,你說我怎么就攤上這事亡驰∠停” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵凡辱,是天一觀的道長戒职。 經常有香客問我,道長透乾,這世上最難降的妖魔是什么洪燥? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮乳乌,結果婚禮上捧韵,老公的妹妹穿的比我還像新娘。我一直安慰自己汉操,他們只是感情好再来,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磷瘤,像睡著了一般芒篷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上采缚,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天针炉,我揣著相機與錄音,去河邊找鬼扳抽。 笑死篡帕,一個胖子當著我的面吹牛殖侵,可吹牛的內容都是我干的。 我是一名探鬼主播镰烧,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼拢军,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拌滋?” 一聲冷哼從身側響起朴沿,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎败砂,沒想到半個月后赌渣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡昌犹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年坚芜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斜姥。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸿竖,死狀恐怖,靈堂內的尸體忽然破棺而出铸敏,到底是詐尸還是另有隱情缚忧,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布杈笔,位于F島的核電站闪水,受9級特大地震影響,放射性物質發(fā)生泄漏蒙具。R本人自食惡果不足惜球榆,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禁筏。 院中可真熱鬧持钉,春花似錦、人聲如沸篱昔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旱爆。三九已至舀射,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怀伦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工够庙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留壮虫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓浮还,卻偏偏與公主長得像桑孩,于是被迫代替她去往敵國和親拜鹤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348