Python小白學(xué)習(xí)進(jìn)行時(shí)---面向?qū)ο缶幊蹋ǘ?018-6-27)

一、類初始

對象屬性和_ init _方法:
_ init _方法又叫做構(gòu)造法。在類創(chuàng)建對象的時(shí)候自動(dòng)調(diào)用、初始化對象屬性、聲明對象屬性。
self默認(rèn)參數(shù):
self是類中對象方法默認(rèn)參數(shù),調(diào)用帶有默認(rèn)參數(shù)self的方法,系統(tǒng)會(huì)自動(dòng)將當(dāng)前方法的對象傳給self。

class Person:
    """人"""
    def __init__(self, name='', age=0):
        # 聲明對象屬性
        self.name = name
        self.age = age

    def eat(self):
        print('吃飯')

    #  聲明一個(gè)對象方法run
    def run(self):
        print('self',self)
        #在對象方法中使用對象的屬性,直接用self去獲取屬性
        print('%s跑起來'% (self.name))
        self.eat()


#創(chuàng)建一個(gè)Person對象
p1 = Person('小明', 10)

二、屬性的增刪改查

1、查

方式一: 直接通過對象查找屬性;對象.屬性
方式二:getattr(對象,屬性名,默認(rèn)值)
通過方法getattr()獲取對象的指定屬性。
注意:1、不設(shè)置默認(rèn)值,屬性如果存在,就獲取屬性的值;如果不存在不,報(bào)錯(cuò)。
2、設(shè)置默認(rèn)值的情況下:屬性如果存在就獲取屬性的值,如果不存在,將默認(rèn)值作為結(jié)果輸出

class Dog:
    """狗??"""

    # Dog類有name和age兩個(gè)屬性
    def __init__(self, name='', age=0):
        self.name = name
        self.age = age
dog1 = Dog('才才')
print(getattr(dog1, 'name', None))
print(getattr(dog1, 'score', None))

才才
None
2、修改

方式一:將新值直接付給對應(yīng)的屬性 ;對象.存在的屬性 = 新值

dog1.name = '大黃'

方式二:setattr(對象,屬性名,新值)

setattr(dog1, 'name', '小黃')

方式三:對象._ setattr_(屬性名,新值)

dog1.__setattr__('name', '小黑')
3、增(對象添加屬性)

Python中可以動(dòng)態(tài)添加屬性
方式一:對象.不存在的屬性=值

dog1.sex = 'nan'

方式二:setattr(對象,不存在的屬性名,新值)

setattr(dog1,'score','100')
print(dog1.score)

方式三:對象.setattr(不存在屬性名,新值)

dog1.__setattr__('score',100)
print(dog1.score)
4、刪除屬性:

方式一: del 對象.屬性

del dog1.age
print(dog1.age)  # AttributeError: 'Dog' object has no attribute 'age'
刪除以后再打印age屬性會(huì)出現(xiàn)報(bào)錯(cuò)。

方式二:delattr(對象,屬性名)

  delattr(dog1, 'age')

方式三:對象.delattr(屬性名)

dog1.__delattr__('age')
5、判斷對象是否擁有某個(gè)屬性

方式:hasattr(對象,屬性名)
判斷對象是否擁有指定屬性
其返回值為bool值

result = hasattr(dog1, 'name')
print(result)

實(shí)例:

1、對象屬性的操作只對當(dāng)前那一個(gè)對象有效
class Person:
    """人"""
    def __init__(self, name='', age=0, id_num='', sex=''):
        self.name = name
        self.age = age
        self.id_num = id_num
        self.sex = sex


p1 = Person('小明', 10)
# 給不存在的屬性賦值,就是添加屬性
p1.score = 100
print(p1.score+100)

del p1.name
# print(p1.name)

p2 = Person('luo', 30)
print(p2.name)

注意:
1.對對象屬性的增、刪、改、查是針對指定的那個(gè)一個(gè)對象。不會(huì)影響其他的對象
2.實(shí)際開發(fā)用的時(shí)候,一般只用獲取對象屬性的值和修改對象屬性的值。想要添加和刪除屬性,一般都是在init方法中去操作

2、
class Dog:
        """狗"""
        # 通過給__slots__賦值,可以限制類中對象的屬性有哪些,防止一個(gè)不必要的屬性被添加
    __slots__ = ('name', 'age', 'color')

    def __init__(self, name='', age=0, color=''):
        self.name = name
        self.age = age
        self.color = color
        # self.sex = '男'  # AttributeError,因?yàn)開_slots__中沒有'sex'


dog1 = Dog('笑話', 3, 'Yellow')
# dog1.name1 = '大黃'
# dog1.sex = '男'

del dog1.name
# 注意:__slots__中規(guī)定的屬性,只能少不能多。刪除屬性是不受影響的

6、內(nèi)置函數(shù)

1.類._ name_ : 獲取類的名字(只有類有這個(gè)屬性)

class_name = Dog.__name__

2.類.doc : 獲取類的說明文檔

print(Dog.__doc__)

3.dict
類.dict : 獲取類中所有的類屬性(類字段)和對應(yīng)的值的鍵值對 --> 結(jié)果是字典
對象.dict : 以鍵值對的形式獲取指定對象的所有的屬性和值

print(Dog.__dict__)

dog.sex = '男'
print(dog.__dict__)
  1. 類.module : 獲取類所在的模塊的名字
print(Dog.__module__, __name__)
  1. 類.bases : 獲取指定類的基類
print(Dog.__bases__)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容