一、类的特殊属性
class A:
pass
class B:
pass
class C(A,B):
def __init__(self,name,age):
self.name=name
self.age=age
"""
类的特殊属性
"""
print(object.__dict__)
x=C("Jack",18)
print(x.__dict__)
print(C.__dict__)
print(x.__class__)
print(C.__bases__)
print(C.__base__)
print(C.__mro__)
print(A.__subclasses__())
二、类的特殊方法(__ add__())
"""
类的特殊方法1
1、__len__ 重写这个方法,让内置函数len()的参数可以是自定义
2、__add__ 重写这个方法,可以使自定义对象有"+"功能
3、__new__ 用于创建对象
4、__init__ 用于对创建的对象进行初始化
"""
a=20
b=100
c=a+b
print(c)
d=a.__add__(b)
print(d)
class Student:
def __init__(self,name):
self.name=name
def __add__(self, other):
return self.name+other.name
def __len__(self):
return len(self.name)
stu1=Student("张三")
stu2=Student("李四")
s=stu1+stu2
print(s)
三、类的特殊方法(__ len__())
lst=[1,2,3,4]
print(len(lst))
print(len(stu1))
四、类的特殊方法(__ new__()和__ init__())
"""
类的特殊方法2
"""
class Person(object):
def __init__(self,name,age):
print("__init__被调用了,self的id值为:{0}".format(id(self)))
self.name=name
self.age=age
def __new__(cls, *args, **kwargs):
print("__new__被调用执行了,cls的id值为{0}".format(id(cls)))
obj=super().__new__(cls)
print("创建的对象的id为:{0}".format(id(obj)))
return obj
p1=Person("李四",19)
print("object这个类对象的id为:{0}".format(id(object)))
print("Person这个类对象的id为:{0}".format(id(Person)))
print("P1这个类对象的id为:{0}".format(id(p1)))
"""
结论 new中创建的对象其实就是init中的self
Person传给cls 然后传给object 然后进行创建对象 obj
new中的obj 就是self 然后就是创建出来的p1
"""