您好!此筆記的文本和代碼以網盤形式分享於文末!
因個人能力有限,錯誤處歡迎大家交流和指正!基礎部分內容簡單,但多且零散!
# # 面向對象進階
# # isinstance(obj,cls)檢查是否obj是否是類 cls 的對象
#
#
# class Foo(object):
# pass
#
#
# obj = Foo()
# print(isinstance(obj, Foo))
#
#
# # issubclass(sub, super)檢查sub類是否是 super 類的派生類
# class Foo(object):
# pass
#
#
# class Bar(Foo):
# pass
#
#
# print(issubclass(Bar, Foo))
"""
反射:主要是指程序可以訪問、檢測和修改它本身狀態或行爲的一種能力(自省)
python面向對象中的反射:通過字符串的形式操作對象相關的屬性。
python中的一切事物都是對象(都可以使用反射)
四個可以實現自省的函數(適用於類和對象)
hasattr
getattr
setattr
delattr
"""
# 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'))
#
# # 獲取屬性
# n = getattr(obj, 'name')
# print(n)
# func = getattr(obj, 'say_hi')
# func()
#
# # 報錯
# print(getattr(obj, 'aaaaaaaa', '不存在啊'))
#
# # 設置屬性
# setattr(obj, 'sb', True)
# setattr(obj, 'show_name', lambda self: self.name + 'sb')
# print(obj.__dict__)
# print(obj.show_name(obj))
#
# # 刪除屬性
# delattr(obj, 'age')
# delattr(obj, 'show_name')
# # 不存在,則報錯
# delattr(obj, 'show_name111')
#
# print(obj.__dict__)
# 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'))
# import sys
#
#
# def s1():
# print('s1')
#
#
# def s2():
# print('s2')
#
#
# this_module = sys.modules[__name__]
#
# print(hasattr(this_module, 's1'))
# print(getattr(this_module, 's2'))
# 一道面試題
class Person:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def __hash__(self):
return hash(self.name+self.sex)
def __eq__(self, other):
if self.name == other.name and self.sex == other.sex:return True
p_lst = []
for i in range(84):
p_lst.append(Person('egon', i, 'male'))
print(p_lst)
print(set(p_lst))
願有更多的朋友,在網頁筆記結構上分享更邏輯和易讀的形式:
鏈接:暫無
提取碼:暫無