類的常用函式

2021-09-09 08:19:10 字數 3743 閱讀 5404

一、類的常用函式

1、issubclass()

檢測乙個類是否是另乙個類的子類

格式1:isssubclass(被檢測類,父類)

返回值:布林值

格式2:issubclass(被檢測類,(父類1,父類2,父類3…))

返回值:布林值

注意:只要有乙個類是當前被檢測的父類,那麼最終結果就是true

練習1、檢查bar類是否是foo類的子類

class foo(object):

pass

class bar(foo):

pass

issubclass(bar,foo)

2、isinstance()

檢測乙個物件是否是某個類的物件

格式1:isinstance(物件,類)

返回值:布林值

格式2:isinstance(物件,(類1,類2,類3…))

返回值:布林值

注意:只要乙個類是當前物件的類,那麼最終結果就是true

練習1、檢查obj是不是foo類的物件

class foo(object):

pass

obj=foo()

b=isinstance(obj,foo)

print(b)

二、反射方法

python物件導向中的反射:通過字串的形式操作物件相關的屬性

python中的一切事物都是物件(都可以使用反射)

四個反射相關的函式

-hasattr :判斷是否有此變數,返回bool 值

-getattr : 獲取屬性值或者獲取方法變數的位址

-setattr :給類或者物件設定屬性或者方法 (用的場合很少,了解即可)

-delattr: 刪除類或者物件的屬性或方法(用的場合很少,了解即可)

1、getattr()

獲取物件/類中的成員值

格式:getattr(物件,『屬性名』[成員不存在時的預設值]

返回值:成員值

練習1:獲取靜態方法和類方法

class teacher(object):

# 類的靜態屬性

dict=

def __init__(self,name,age):

self.name=name

self.age=age

# 類方法

@classmethod

def func(self):

print('hhhhh')

def show_student(self):

print('show_student...')

def show_teacher(self):

print('show_teacher...')

attr=getattr(teacher,'dict')

print(attr)

func=getattr(teacher,'func')

func()

練習2、

teacher(object):

# 類的靜態屬性

dict=

def __init__(self,name,age):

self.name=name

self.age=age

def func(self):

print('hhhhh')

def show_student(self):

print('show_student...')

def show_teacher(self):

print('show_teacher...')

teacher=teacher('zs','123')#獲取物件的屬性值和普通方法

name=getattr(teacher,'name')#反射物件的屬性和普通方法

print(name)#獲取屬性

2、hasattr()

檢測物件/類是否具有某個成員

格式:hasattr(物件/類,『成員名』)

返回值:布林值

3、setattr()

設定或者新增物件/類中的成員

格式:setattr(物件,『成員名』,值)

返回none

4、delattr()

刪除a物件的name屬性

格式:delattr(物件,成員)

返回值:none

練習1刪除a物件的name屬性

class a():

pass

setattr(a,'age',10)

a=a()

delattr(a,'age')

三、反射匯入模組中的屬性、函式、類

第乙個引數是模組名,第二個引數是變數名稱

1、反射test模組中的屬性、函式、和類

test模組

day='星期1'

def func():

print('hahah')

class a(object):

def func1(self):

print('func1...')

def func2(name):

print('name----->',name)

import test

print(test.day)#反射模組中的屬性

print(getattr(test,'day'))

func=getattr(test,'func')

func()#反射模組中的方法

b=getattr(test,'a')

a=b()

a.func1()#反射模組中的類

func2=getattr(test,'func2')

func2('ls')#反射帶引數的函式

2、反射自己模組中的屬性和函式,借助sys模組獲取當前模組的名字

練習1:檢視當前的所有模組

import sys

print(sys.modules)

name1='111111'

name='zs'#反射出當前模組中的name變數

attr=getattr(sys.modules['__main__'],'name1')

print(attr)

3、反射當前模組中的函式

def func():

print('哈哈哈')

fun=getattr(sys.modules['__main__'],'func')

fun()

注意事項:

如果本模組作為匯入模組 模組名成就不是__main__了,因此使用__name__屬性動態獲取

fun=getattr(sys.modules[__name__],'func')

fun()

4、反射內建模組

用法和反射匯入模組相同

練習1:反射time模組中的time()函式

import time

print(time.time())

t=getattr(time,'time')

print(t())

import math

print(math.pi)

t=getattr(math,'pi')

print(t)

C string類的常用函式

1 string 類的物件可以直接賦值 string operator const string s 2 string operator const string s 3 還可以直接用運算子 直接比較字串。4 string.swap string s2 交換當前字串與s2的值。5 string.fi...

cctype 類常用函式

c 中應該是 include c中應該是 include 以下為字元函式庫中常用的函式 函式名稱 返回值isalnum 如果引數是字母數字,即字母或數字,該函式返回true isalpha 如果引數是字母,該函式返回真 isblank 如果引數是空格或水平製表符,該函式返回true iscntrl ...

C string類常用函式

string類的建構函式 string const char s 用c字串s初始化 string int n,char c 用n個字元c初始化 此外,string類還支援預設建構函式和複製建構函式,如string s1 string s2 hello 都是正確的寫法。當構造的string太長而無法表...