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

愿有更多的朋友,在网页笔记结构上分享更逻辑和易读的形式:

链接:暂无
提取码:暂无

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