python_进阶_对象

访问修饰符

  • 公有成员
    默认情况
  • 私有成员
    用双下横线声明
    私有成员不可在外部及子类访问,也不允许被继承
  • 特殊成员
    方法
    __new__:构造函数,创建实例的方法,返回实例
    __init__:初始化函数,在new的内部调用
    __repr__:实例被直接打印时调用,打印返回值
    __call__:实例当函数被调用时执行
    __iter__:返回迭代器iter(),实例被迭代时先调用此函数
    属性方法
    __getitem__:下标读取属性不存在时调用
    __setitem__:下标设置属性时调用,self.dict[k]=v
    __delitem__:下标删除实例属性时调用
    __getattr__:【.】操作读取属性时调用
    __getattribute__:【.】操作读取属性时调用,定义后getattr不生效
    __setattr__:【.】操作设置属性时调用
    __delattr__:【.】操作删除实例属性时调用
    类型转换方法
    __int__:被int包裹时调用,返回转换结果
    __str__:被str包裹时调用,返回转换结果
    运算符重载
    __add__:加法,返回运算结果,add(self,other)
    实例属性
    __class__:返回实例所在的类
    __dict__:实例属性列表
    __doc__:类文档,help(类或者实例)
    类属性
    __bases__:当前类的所有父类

类相关内置函数

type(name,bases,dict)元类构造对象
isinstance(object,classinfo):判断实例是否属于类
issubclass(class,classinfo):判断继承关系
hasattr(object,name):判断实例属性是否存在
getattr(object,name):获取实例属性值
setattr(object,name,value):设置实例属性
delattr(object,name):删除实例属性
super(type[, object-or-type]):返回值可以直接调用其父类属性

外部添加变量

import types

class obj:
    def __init__(self):
        pass

o1=obj()
o2=obj()
  • 变量
# 静态变量
# 严格说没有指针概念的python不支持静态变量
# 被修改过的实例不会被同化,浅复制逻辑
obj.attr_ac='attr_ac'

# 实例变量
o1.attr_dy='attr_dy'
  • 方法
# 静态方法(不需要self参数)
@staticmethod
def fc_sc():
    print('fc_sc')
obj.fc_sc=fc_sc
o1.fc_sc()

# 实例方法
def fc_dy(self):
    print('fc_dy')
o1.fc_dy=types.MethodType(fc_dy,o1)
o1.fc_dy()

print([x for x in dir(o1) if not x.endswith('__')])
print([x for x in dir(o2) if not x.endswith('__')])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值