python __new__ __init__

发布时间 2023-12-07 11:37:58作者: howhy
class Student():
    def __new__(cls, *args, **kwargs):##创建类的实例
        print('__new__')
        return object.__new__(cls)##此处返回才会调用__init__
    def __init__(self):##初始化类的实例
        print('__init__')

class NewInt(int):
    def __new__(cls, value):
        return int.__new__(cls,abs(value))
#单例横式
class Person():
    __isinstance=False
    def __new__(cls, *args, **kwargs):
        if cls.__isinstance:
            return cls.__isinstance
        else:
            cls.__isinstance = object.__new__(cls)
            return cls.__isinstance
    def __init__(self):
        print('3333')
if __name__=='__main__':
  stu=Student()
  nint=NewInt(-2.45)
  print(nint) ##2
  p1=Person()
  p2 = Person()
  print(p1,p2)