亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

類的方法

1、類專有的方法

一個類創(chuàng)建的時候,就會包含一些方法,主要有以下方法:

類的專有方法:

方法?說明
__init__?構(gòu)造函數(shù),在生成對象時調(diào)用
__del__?析構(gòu)函數(shù),釋放對象時使用
__repr__?打印,轉(zhuǎn)換
__setitem__?按照索引賦值
__getitem__?按照索引獲取值
__len__?獲得長度
__cmp__?比較運算
__call__?函數(shù)調(diào)用
__add__?加運算
__sub__?減運算
__mul__?乘運算
__div__?除運算
__mod__?求余運算
__pow__?乘方

當(dāng)然有些時候我們需要獲取類的相關(guān)信息,我們可以使用如下的方法:

type(obj):來獲取對象的相應(yīng)類型;

isinstance(obj, type):判斷對象是否為指定的 type 類型的實例;

hasattr(obj, attr):判斷對象是否具有指定屬性/方法;

getattr(obj, attr[, default]) 獲取屬性/方法的值, 要是沒有對應(yīng)的屬性則返回 default 值(前提是設(shè)置了 default),否則會拋出 AttributeError 異常;

setattr(obj, attr, value):設(shè)定該屬性/方法的值,類似于 obj.attr=value;

dir(obj):可以獲取相應(yīng)對象的所有屬性和方法名的列表:

2、方法的訪問控制

其實我們也可以把方法看成是類的屬性的,那么方法的訪問控制也是跟屬性是一樣的,也是沒有實質(zhì)上的私有方法。一切都是靠程序員自覺遵守 Python 的編程規(guī)范。

示例如下,具體規(guī)則也是跟屬性一樣的,

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class User(object):
    def upgrade(self):
        pass
    def _buy_equipment(self):
        pass
    def __pk(self):
        pass

3、方法的裝飾器

@classmethod 調(diào)用的時候直接使用類名類調(diào)用,而不是某個對象

@property 可以像訪問屬性一樣調(diào)用方法

具體的使用看下實例:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
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('兩點水', 23, 347073565);
    # 打印所有屬性
    print(dir(userInfo))
    # 打印構(gòu)造函數(shù)中的屬性
    print(userInfo.__dict__)
    # 直接使用類名類調(diào)用,而不是某個對象
    print(UserInfo.lv)
    # 像訪問屬性一樣調(diào)用方法(注意看get_age是沒有括號的)
    print(userInfo.get_age)

運行的結(jié)果:

e53dc1900a55b2ba13dc94b9e9d2d4c.png

繼續(xù)學(xué)習(xí)