Day_13 類和對象

python中每個類都擁有內置的類屬性
__name__
__doc__
__dict__
__moudle__
__basex__
class Cat:
    """aaaa
    """
    number = 0
    def __init__(self,name,color):
        self.name = name
        self.color = color
    def run(self):
        print('%s在跑'%self.name)
    @staticmethod
    def shout(cls):
        print('fuck')
    @classmethod
    def getnumber(cls):
        print('貓的數(shù)量%d'%cls.number)
class LitteCat(Cat):
    pass

if __name__ == '__main__':
    cat1 = Cat('小花','white')
    # 1.類.__name__ 獲取類名字
    print(Cat.__name__)
    # 2.類.__doc__ 獲取類的說明文檔
    print(Cat.__doc__)
    # 3.類.__dict__  對象.__dict__
    # 獲取類所有的屬性和對應的值用字典存儲
    # 獲取對象的屬性和對應的值用字典存儲
    print(Cat.__dict__)
    print(cat1.__dict__)
    # 4.類.__moudle__ 獲取當前類所在的模塊
    #  對象.__moudle__ 獲取對象所在的模塊
    print(Cat.__module__)
    print(cat1.__module__)
    # 5.類.__base__ 查看當前類的父類
    print(Cat.__bases__)
    print(LitteCat.__bases__)


Cat
aaaa
    
{'__module__': '__main__', '__doc__': 'aaaa\n\t', 'number': 0, '__init__': <function Cat.__init__ at 0x0219C978>, 'run': <function Cat.run at 0x0219C930>, 'shout': <staticmethod object at 0x02198C50>, 'getnumber': <classmethod object at 0x02198CF0>, '__dict__': <attribute '__dict__' of 'Cat' objects>, '__weakref__': <attribute '__weakref__' of 'Cat' objects>}
{'name': '小花', 'color': 'white'}
__main__
__main__
(<class 'object'>,)
(<class '__main__.Cat'>,)

python中類中的屬性和方法的私有化
直接在屬性名或方法名前加__
屬性或方法的私有:在外部不能直接使用,可以在類的內部使用

from random import randint
class Person:
    number = 0
    # __number =0
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    def show_age(self):
        print('%d'%self.__age)
        self.__fun()
    #   類的內部調用類的私有方法
    def __fun(self):
        print('no%s'%self.name)
    @classmethod
    def get_number(cls):
        return cls.number
    @classmethod
    def __get_number(cls):
        return cls.number

if __name__ == '__main__':
    p1 = Person('張三',30)
    p1.show_age()
    # print(p1.__age)
    print(p1.name)
    print(Person.number)
    print(Person.get_number())
    # print(Person.__get_number())
    #不能訪問私有化

    # 私有化原理:在內部在私有化,
    # 的名字前面加前綴'_類名
    # 訪問私有化屬性
    print(p1.__dict__)
    print(p1.__dict__['_Person__age'])


class  Student:
    def __init__(self,name):
        self.name = name
        # self.id =self.__creat_id()
        self.id = id
    def __creat_id(self):
        id = 'py1805'+str(randint(1,100)).rjust(3,'0')
        return  id
    def creat(self,name):
        stu = Student(name)
        stu.id = self.__creat_id()
        return stu

stu1 = Student('張三')
print(stu1.id)

30
no張三
張三
0
0
{'name': '張三', '_Person__age': 30}
30
<built-in function id>

屬性假的私有化:在屬性名前面加一個_假私有化稚机,
通過geter和setter來獲取和修改屬性的值

geter:獲取屬性的值
如果想要獲取對象的某個屬性前需要做其他操作,
就給屬性添加getter
@property
def 屬性名(去掉下劃線)(self):
    :return 返回值
    
setter:給屬性賦值
一個屬性必須要有getter才能添加setter
在給對象的某個屬性賦值前获搏,添加setter
@屬性名(去掉下劃線).setter
def (屬性名去掉下劃線)(self,value):
    self_name = value
給帶下劃線的屬性賦值
class Person:
    def __init__(self,name,age):
        # 申明屬性的時候前面加一個'_'假私有化
        self.__name = name
        self.__age = age
    # 給屬性_name添加getter
    @property
    # 命名去掉假私有化屬性前面的_以假私有化的名字為函數(shù)名
    def name(self):
        return self.__name
    # 給屬性_name添加setter
    @name.setter
    def name(self,value):
        self.__name = value
    @property
    def age(self):
        return str(self.__age)+'歲'
    @age.setter
    def age(self,age):
        if age>=150 or age<0:
            print('你的年齡引起了我的注意')
            self.__age = None
            return
        self.__age = age



if __name__ == '__main__':
    p1 =Person('a',12)
    print(p1.name)
    # p1._name = 'b'
    print(p1.name)
    p1.name = 'b'
    print(p1.name)
    p1.age = 20
    print(p1.age)

a
a
b
20歲

1.繼承基礎

python中類是可以繼承的赖条,并且支持多繼承
class 類名(父類)
    屬性
    方法
Python中所有的類默認繼承Python的object類
2.能繼承那些內容
繼承:直接擁有父類的屬性和方法,
對象的屬性和方法常熙、類的字段和類方法纬乍、靜態(tài)方法都可以繼承
私有屬性和方法-不能繼承
__slots__的值不會被繼承
getter和setter會被繼承

父類也叫超類
class A:
    number = 61
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    def fun1(self):
        print('%s在吃飯'%self.name)
    @classmethod
    def get_number(cls):
        print('數(shù)量%d'%cls.number)
    @staticmethod
    def fun2():
        print('da sha bi')
    def __fun3(self):
        print('*****')

class B(A):
    pass
b1 = B('aa',12,'s')
print(b1.name,b1.age,b1.sex)
b1.fun1()
print(B.get_number())
B.fun2()
print(b1._A__fun3())

aa 12 s
aa在吃飯
數(shù)量61
None
da sha bi
*****
None
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裸卫,隨后出現(xiàn)的幾起案子仿贬,更是在濱河造成了極大的恐慌,老刑警劉巖墓贿,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诅蝶,死亡現(xiàn)場離奇詭異,居然都是意外死亡募壕,警方通過查閱死者的電腦和手機调炬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舱馅,“玉大人缰泡,你說我怎么就攤上這事〈停” “怎么了棘钞?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長干毅。 經常有香客問我宜猜,道長,這世上最難降的妖魔是什么硝逢? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任姨拥,我火速辦了婚禮绅喉,結果婚禮上,老公的妹妹穿的比我還像新娘叫乌。我一直安慰自己柴罐,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布憨奸。 她就那樣靜靜地躺著革屠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排宰。 梳的紋絲不亂的頭發(fā)上似芝,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音板甘,去河邊找鬼国觉。 笑死,一個胖子當著我的面吹牛虾啦,可吹牛的內容都是我干的麻诀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼傲醉,長吁一口氣:“原來是場噩夢啊……” “哼蝇闭!你這毒婦竟也來了?” 一聲冷哼從身側響起硬毕,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤呻引,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吐咳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逻悠,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年韭脊,在試婚紗的時候發(fā)現(xiàn)自己被綠了童谒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡沪羔,死狀恐怖饥伊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情蔫饰,我是刑警寧澤琅豆,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站篓吁,受9級特大地震影響茫因,放射性物質發(fā)生泄漏。R本人自食惡果不足惜杖剪,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一冻押、第九天 我趴在偏房一處隱蔽的房頂上張望驰贷。 院中可真熱鬧,春花似錦翼雀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至类垦,卻和暖如春狈邑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚤认。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工米苹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砰琢。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓蘸嘶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陪汽。 傳聞我的和親對象是個殘疾皇子训唱,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 原文地址這是一個系列文章,查看更多請移步目錄頁 蘋果在WWDC 2015中介紹了 CloudKit JS挚冤,它允許開...
    Nathan_Bao閱讀 1,172評論 1 4
  • 寶劍九 這完全是我想太多况增,失眠的畫面啊,我到底應該怎么走怎么選擇…… 讀圖一:一個人在床上坐著训挡,手捂著臉澳骤,很苦惱很...
    宋佳Sabrina閱讀 245評論 0 0
  • How to read practical books? Words & Phrases 1. Cut acros...
    飛鳥逐溪閱讀 228評論 0 0
  • 我的故事是這樣的: 明天是公休日,大部分人都休息澜薄,包括我在內为肮。但是因為今晚有PN,負責盯場的同事得凌晨1點后才下班...
    張露deer閱讀 144評論 0 0
  • 醉赤壁—林俊杰 黃土堆砌了幾座冢 我只留戀那松 千年 五陵原上漢冢如洪 一紙軍令誓萬世忠 將守君一身勇 一...
    靜水覺閱讀 287評論 0 1