[016]Python面向對象_進階_全棧基礎

您好!此筆記的文本和代碼以網盤形式分享於文末!

因個人能力有限,錯誤處歡迎大家交流和指正!基礎部分內容簡單,但多且零散!

# # 面向對象進階

# # 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))

願有更多的朋友,在網頁筆記結構上分享更邏輯和易讀的形式:

鏈接:暫無
提取碼:暫無

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章