magic_method

# _*_ coding:utf-8 _*_
# @Time :2020/1/14 23:22
# @Author :dery
# @File :magic_method.py
# @Software :PyCharm


# class Phone:
# def __init__(self): # 魔术方法之一:称作魔术方法__名字__(),init 初始化
# # 动态添加属性
# self.brand = 'xiaomi'
# self.price = 3000
#
# def call(self):
# print('--------call')
# print('价格', self.price) # 不能保证每个self中都存在此属性
#
#
# p = Phone()
# p.call()
# p1 = Phone()
# p1.price = 5900
# p1.call()

# print(Phone.price)

# 魔术方法
# __init__:初始化魔术方法
# 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中)

# __new__:实例化的魔术方法
# 触发时机:在实例化时触发

# __call__:想把对象当成函数用时,重写此方法。对象()
# 触发时机:将对象当成函数使用的时候

# __del__:删除引用时调用此魔术方法
'''
1.对象赋值
p = Person()
p1 = p
说明:p和p1指向同一个地址

2.删除地址的引用
del p1 删除p1对该地址的引用

3.查看地址的引用次数
import sys
sys.getrefcount(对象)

4.当一块空间没有任何引用时,默认执行__del__
'''
# __str__


class Person:
def __init__(self, name, age):
print('-------->init')
self.name = name
self.age = age

def __str__(self):
return '姓名:' + self.name + '年龄:' + self.age

p = Person('jack', '18')
print(p)

# def __new__(cls, *args, **kwargs): # 申请内存,开辟空间
# print('-------->new')
# position = super(Person, cls).__new__(cls)
# print(position)
# return position
#
# def __call__(self, *args, **kwargs):
# print('------->call')
# p = Person('jack')
# p() # 对象当方法使用

猜你喜欢

转载自www.cnblogs.com/python-beginner/p/12199233.html