物件導向及高階

2021-09-01 23:57:43 字數 3338 閱讀 1004

import hashlib

password = "125156"

md5_obj = hashlib.md5("bin".encode())

md5_obj.update(password.encode())

ret = md5_obj.hexdigest()

print(ret)

#注:物件(即"bin"、password)在被雜湊(hash)之前一定要先編碼(encode)

1.私有屬性或靜態變數

雙下劃線

2.類中 三個裝飾器方法

classmethod 類方法

類方法(物件):「類方法(函式)->方法將函式轉換為類方法。類方法作為隱式第乙個引數接收類,就像例項方法接收例項一樣。要宣告乙個類方法,請使用以下成語:類c:@classmethoddef(cls,arg1,arg2,.):

classmethod

class classmethod_demo():

role = "dog"

@classmethod

def func(cls):

print(cls.role)

classmethod_demo.func()

f1 = classmethod_demo()

f1.func()

property  把乙個方法偽裝成屬性 使用之後呼叫不加括號

staticmethod   靜態方法  

class staticmethod_demo():

role = "dog"

@staticmethod #靜態方法 下面的func不用傳參

def func():

print("123")

staticmethod_demo.func()

3.修改屬性值   屬性.setter (之前必須有乙個同名的方法被property裝飾過)

4.反射(最重要的知識點)通過字串的形式操作物件相關的屬性。python中的一切事物都是物件(都可以使用反射)

class foo():

f = "類的靜態變數"

def __init__(self,name,age):

self.name = name

self.age = age

def say_hi(self):

print("hi,%s"%self.name)

obj = foo("egon",73)

print(hasattr(obj,"name"))

print(hasattr(obj,"say_hi"))

4.1 getattr    獲取屬性

def getattr(object,name,default=none):getattr(object,name[,default])->值從乙個物件獲取乙個命名的屬性;getattr(x,『y』)等同於x.y。如果給定預設引數,則在屬性不存在時返回該引數;如果沒有該引數,則會引發異常

n = getattr(obj,"name")

print(n)

func = getattr(obj,"say_hi")

func()

print(getattr(obj,"aaaa","不存在啊"))      列印「不存在啊」   即屬性不存在時返回該引數

4.2 hasattr   檢測是否含有某種屬性

def hasattr(*args,*kwargs):返回物件是否具有給定名稱的屬性,這是通過呼叫getattr(obj,name)和捕獲attributeerror完成的。

print(hasattr(obj,"name"))   

print(hasattr(obj,"say_hi")

4.3 setattr   設定屬性 

def setattr(x,y,v):將給定物件上的命名屬性設定為指定值。setattr(x,『y』,v)等效於『x.y=v』。

setattr(obj,'sb',true)

setattr(obj,'show_name',lambda self:self.name+'sb')

print(obj.__dict__)          加入  「sb」 :true

print(obj.show_name(obj))     列印egonsb

4.4 delattr     刪除屬性

def delattr(x,y):刪除給定物件中的命名屬性。delattr(x,『y』)相當於`del x.y『

5. isinstance

isinstance(obj,cls)檢查是否obj是否是類 cls 的物件

class foo(object):

pass

obj = foo()

obj cls

isinstance(obj, foo) 判斷obj(物件)是否是這個foo類的物件 如果foo為子類,則同樣適用父類,返回也是true

5.1 issubclass

def是子類(x,a_tuple):返回『cls』是從另乙個類派生的還是同乙個類。元組,如「issubclass(x,(a,b,.)」中的元組,可以作為檢查的目標。這相當於`issubclass(x,a)或issubclass(x,b)

issubclass(sub, super)檢查sub類是否是 super 類的派生類

class a(object):

pass

class foo(a):

pass

class bar(foo):

pass

print(issubclass(bar, foo)) bar 是foo、a、object的子集,返回true

類也是物件

class foo(object):

staticfield = "old boy"

def __init__(self):

self.name = 'wupeiqi'

def func(self):

return 'func'

@staticmethod

def bar():

return 'bar'

print(getattr(foo, 'staticfield'))

print(getattr(foo, 'func'))

print(getattr(foo, 'bar'))

物件導向 高階

json方式的物件導向 json 把方法包在json裡 json物件導向 有人管他叫 命名空間 在公司裡 把同一類 的方法包在一起 拖拽和繼承 物件導向的拖拽 改寫原有的拖拽 繼承 asdf 拖拽 instanceof 檢視物件是某個類的例項 使用繼承 限制範圍的拖拽類 建構函式的偽裝 屬性的繼承 ...

物件導向高階

public class person public void print public class student extends person 重寫了父類方法 public void print public class demo public class demo 1.不能new這個類,只能靠...

物件導向高階

私有屬性,不能被子類繼承,在屬性的前面加上 就變為了私有屬性 私有方法,不能被子類繼承,在方法的前面加上 就變為了私有方法 只在前面加,後面不加,一般前後都有 的,屬於類當中自帶的方法或屬性 class class test1 str1 a 私有屬性 def init self pass def m...