标签:自动 fun new item 垃圾 str 空间 object类 name
定义:
len
# class B:
#
# def __init__(self,name,age):
# self.name = name
# self.age =age
#
# def __len__(self):
# print(self.__dict__)
#
# return len(self.__dict__) # 2
#
# b = B('leye',28)
#
# print(len(b))
hash
类的实例化对象也是可哈希的
可哈希对象得到哈希值
# class A(object):
#
# pass
#
# obj = A()
# print(hash(obj))
# print(hash('fdsaf'))
-9223371858122639079
8102982483253201962
str
开发应用比较多
打印对象触发__str__方法
print(对象)默认输出该方法的返回值
# class A:
#
# def __init__(self,name,age):
# self.name = name
# self.age =age
#
# def __str__(self):
# return f'姓名: {self.name} 年龄: {self.age}'
a = A('DAVID',12)
b = A('ASDF',13)
c = A('QWER',14)
print(a)
print(b)
print(c)
姓名: DAVID 年龄: 12
姓名: ASDF 年龄: 13
姓名: QWER 年龄: 14
print(str(a))
直接str转化也可以触发
repr
原形毕露:是什么就打印什么,包括引号
和str类似,但是优先级低于str
如果一个类中定义了__repr__方法,那么在print(repr(对象))时默认的到该方法的返回值
class A:
def __init__(self,name,age):
self.name = name
self.age =age
def __repr__(self):
return 666
def __str__(self):
return f'姓名: {self.name} 年龄: {self.age}'
a = A('DAVID',12)
b = A('ASDF',13)
c = A('QWER',14)
print(a)
print(b)
print(c)
优先执行——str——
姓名: DAVID 年龄: 12
姓名: ASDF 年龄: 13
姓名: QWER 年龄: 14
call
对象+():自动触发对象从属于类(父类)的__call__方法
class Foo:
def __init__(self):
pass
def __call__(self, *args, **kwargs):
print('__call__')
obj = Foo()
obj()
__call__
ep
class A:
def __init__(self):
self.a = 1
self.b = 2
def __eq__(self,obj):
if self.a == obj.a and self.b == obj.b:
return True
a = A()
b = A()
print(a == b)
True
del
new
对象是object类的__new__方法,产生了一个对象
类名()
obj = 类名()
接上面
自动将对象地址传给__init__的self
运行__init__方法中的代码,给对象封装属性
class A(object): #步骤
def __init__(self): #5
self.x = 1
print('in init function') #6
def __new__(cls, *args, **kwargs): #2
print('in new function') #3
return object.__new__(A) #4
a = A() #1
print(a) #7
打印结果
in new function
in init function
<__main__.A object at 0x0000019399779198>
item
class Func():
def __init__(self,name):
self.name = name
def __getitem__(self,item):
print(self.__dict__[item])
def __setitem__(self,key,value):
self.__dict__[key] = value
def __delitem__(self,key):
self.__dicy__.pop(key)
def __delattr__(self,key):
self.__dict__.pop(key)
obj = A('alwx')
obj['age'] = 18
obj['hobby'] = 19
del obj['age']
del obj['hobby']
del obj.age
obj['name'] = 'david'
上下文管理
标签:自动 fun new item 垃圾 str 空间 object类 name
原文地址:https://www.cnblogs.com/daviddd/p/12034290.html