面向对象高阶成员、方法的分类、常用函数

75 篇文章 2 订阅
66 篇文章 5 订阅

面向对象高阶成员

# 获取类/对象的所属成员 类/对象.__dict__
res = Demo.__dict__  # 获取当前类的所属成员
res = obj.__dict__   # 获取当前对象的所属成员

# 获取类的文档信息 类/对象.__doc__
res = Demo.__doc__
res = obj.__doc__

# 获取类名称组成的字符串
res = Demo.__name__

# 获取类所在的文件名称,如果是当前文件,显示为__main__
res = Demo.__module__

# __bases__ 获取当前类的父类列表
res = Demo.__base__ # 获取继承的第一个父类
res = Demo.__bases__ # 获取继承的所有的父类列表

# MRO列表  获取当前类的继承链
res = Demo.__mro__

方法的分类

1. 对象方法
    特征:
        1. 在类中定义的方法,含有self参数
        2. 含有self的方法,只能使用对象进行调用
        3. 该方法会把调用的对象传递进来

2. 类方法
    特征:
        1。在类中定义的方法,使用装饰器 @classmethod 进行了装饰
        2。方法中有cls这个行参。不需要实例化对象,直接使用类进行调用
        3。会把调用这个方法的类传递进来

3. 绑定类方法
    特征:
        1。在类中定义的方法
        2。只能使用类进行调用
        3。不会传递对象或者类进来

4. 静态方法
    特征:
        1。在类中定义的方法,使用了 装饰器 @staticmethod 进行了装饰
        2。可以使用对象或者类进行调用
        3。不会传递对象或者类进来
class Demo():

    # 对象方法
    def func1(self):
        print(self)
        print('this is object function func1')

    # 类方法
    @classmethod
    def func2(cls):
        print(cls)
        print(' this is class function  func2')

    # 绑定类方法
    def func3():
        print('this is bind class function func3')


    # 静态方法
    @staticmethod
    def func4():
        print('this is static method func4')
# 实例化对象
obj = Demo()

# 对象方法 调用
# obj.func1()
# Demo.func1() # 不能直接使用类调用 对象方法,
# Demo.func1('a')  # 除非传递一个对象进去,不推荐

# 类方法  调用
# Demo.func2() # 可以使用类直接调用
# obj.func2()   # 即便使用对象进行调用,传递进去的依然是类

# 绑定类方法
# Demo.func3()   # 可以使用类调用绑定类方法
# obj.func3()  # 不能使用对象调用绑定类方法

面向对象 常用函数

class Demo():
    pass

class A():
    pass
class B(A):
    pass
class C(A):
    ccc = 'abc'

class D(B,C):
    name = 'a'
    __age = 20

    def say(self):
        pass
d = D()

# 检测类和对象相关
# issubclass(子类,父类) # 检测一个类是否为另一个类的子类
# res = issubclass(D,B)

# isinstance(对象,) # 检测一个对象是否是该类或该类的子类的实例化结果
# res = isinstance(d,A) # 输出True

# 操作类和对象成员相关
# hasattr(对象/,'成员名称')  检测类/对象是否包含指定名称的成员,无法检测是否含有私有成员
# res = hasattr(d,'name')

#getattr(对象/,'成员名称') # 获取类/对象的成员的值
# res = getattr(d,'say')

# setattr(对象/,'成员名称','成员的值') 设置类/对象的成员的属性值
res = setattr(d,'name','ooo')
# print(d.name)

#delattr(/对象,'成员名称') 删除类/对象的成员属性 和 del 直接删除对象的成员是一样的结果
# delattr(D,'name')
# dir() #获取当前对象所有可以访问的成员的列表
res = dir(d)
print(res)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值