Python笔记-2021-01-19

# 定义一个类属性,记录通过这个类创建了多少个对象
class Person(object):
    count = 0
    def __new__(cls, *args, **kwargs):
        cls.count += 1
        x = object.__new__(cls)     #申请内存,创建一个对象,并设置类型是Person类
        return x
    def __init__(self,name,age):
        # Person.count += 1
        self.name = name
        self.age = age
"""
每次创建对象都会调用 __new__ 和 __init__ 方法
调用 __new__ 方法,用来申请内存
如果不重写 __new__ 方法,它会自动找 object 的 __new__
object 的 __new__ 方法,默认实现是申请了一段内存,创建了一个对象
"""
p1 = Person('张三',18)
p2 = Person('李思思',28)
p3 = Person('Curry',20)
print(p1,p2,p3)
print(Person.count)
"""
申请了内存,创建了对象,被设置它的类型是Person
p4 = object.__new__(Person)
p4.__init__('tony,23)
print(p4)
"""
"""
面向对象3大特性:封装,继承,多态
封装:函数是对1语句块的封装,类是对函数和变量的封装
继承:类和类之间可以认为手动的建立父子关系,父类的属性和方法,子类可以使用
多态:是一种技巧,提高代码的灵活度

"""

你可能感兴趣的:(Python)