设为首页 加入收藏

TOP

python面向对象-1(二)
2019-09-30 16:45:05 】 浏览:116
Tags:python 面向 对象
def datetime1(self): print('time') a1 = A() # 通过反射从对象获取属性 b = getattr(a1, 'local') # 通过反射从类中拿属性 c = getattr(A, 'local') # 通过反射从对象中拿方法 d = getattr(a1, 'datetime1') # 通过反射从模块中拿到类B B = getattr(m1,'B')
print(hasattr(m1,'B'))
e = B()

 

8.特殊双下方法

  __str__与__repr__ ,不太理解,但是都可以把对象的内存地址转为可读字符串

  __call__方法 ,当对象 + () 的情况就会执行 __call__方法

class A:
def __init__(self, name):
self.name = name

def __str__(self):
return self.name

def __call__(self, *args, **kwargs):
print(args, kwargs)
return args, kwargs

def __repr__(self):
return '有str就不会执行repr'

a1 = A('lucy')

# 执行对象的__str__方法
print(a1)

# 执行__call__方法
a1(1, 2, 3, n=1, m=2)

# 直接执行对象的__repr__方法
print(repr(a1))

# 查看对象有多少个方法
print(dir(a1))

  __new__方法 ,new方法是object基类中的方法 ,是构造方法 ,开辟内存 ,创建对象

class A:
    def __new__(cls, *args, **kwargs):
        print('1')
        cls.name = 'LOP'
        return object.__new__(cls)  # 引用obeject的c语言创建对象功能

    def __init__(self):
        print('2')


# 第一步执行__new__方法中的内容,将返回值给对象名a1
# 第二步执行__init__初始化对象
a1 = A()
print(a1.name)
a2 = A()
print(a1 is a2)    # False 两个对象各用内存

##单例模式##
class A:
__instance = None

def __new__(cls, *args, **kwargs):
if cls.__instance == None:
cls.__instance = object.__new__(cls)

# __instance从此记录单例对象的内存
return cls.__instance

a1 = A()
a2 = A()
print(a1 is a2)

 

 

  

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python面向对象-1 下一篇设计模式-结构型-组合模式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目