面向对象

内置方法

# __xxx__
# 不需要自己调用

str : print(obj)调用这个对象的__str__方法,打印的实际上是__str__的返回值

repr: 如果打印一个对象,该对象没有实现str,就会调用repr,并打印它的返回值

new:构造方法,开辟空间,创建了对象/self

# 单例模式(背)

del:析构方法,在删除对象的之前调用,回收一些资源

class A:

def init(self):

sk = socket.socket()

sk.bind('127.0.0.1',9000)

self.sk = sk

self.f = open('file')

def del(self):

self.f.close()

self.sk.close()

a = A()

del a

call : obj()调用__call__方法

enter: 上下问管理,with语句中代码块之前执行的代码

exit : with语句中代码块之后执行的代码

eq : ==

class A:

def init(self,name,age):

self.name = name

self.age = age

def eq(self, other):

return self.name==other.name

a1 = A('alex',84)

a2 = A('alex',84)

a3 = A('wusir',73)

print(a1==a2)

class A:

def init(self,name,age):

self.name = name

self.age = age

def gt(self, other):

return self.age>other.age

a1 = A('alex3',85)

a2 = A('alex',84)

a3 = A('wusir',73)

# print(a1>a3)

l = [a1,a2,a3]

l.sort()

print([a.age for a in l])

getitem

class A:

def init(self,name,age):

self.name = name

self.age = age

def getitem(self, item):

return self.dict[item]

a = A('alex',84)

print(a.name)

print(a['age'])

getattr

class A:

def getattr(self, item):

print(item)

a = A()

a.name

几种方式实现单例模式

# 1.给类添加装饰器的方式
# 2.导入模块的方式
# 3.new的方式
# 4.元类重写元类的__call__方法

有一个类

# 它的对象如果调用一个属性,有这个属性,返回这个属性的值
# 如果没有这个属性,返回一个默认的值‘default’

# 他的对象如果调用一个方法,有这个方法,调用这个方法
# 如果没有这个方法,调用一个默认的default方法
posted @ 2019-08-28 18:18  learnacode  阅读(80)  评论(0编辑  收藏  举报