python的特殊方法

特殊方法的名字以两个下划线开头,以两个下划线结尾,例如:  __init__, __str__
1,str 如果一个类中定义了__init__方法,通过构造进行给实例赋值
	class aa :
		def __init__(self,age,name):
			self.age=age,
			self.name=name
		def get():
		 	print(My name is %s and %s year" %(self.name,self.age))
	a=aa(21,"小")
	a.get()
2,str 如果一个类中定义了__str__方法,在打印对象时,默认输出该方法的返回值,没有定义会返回对象的地址
class aa:
    def __init__(self,age,name):
        self.age = age
        self.name = name
    def __str__(self):
        return "My name is %s and %s year" %(self.name,self.age)
if __name__=="__main__":
    s = ss(21,'小')
    print(s)

3,call 如果一个类中定义了__call__方法,对象后面加括号,会触发执行__call__方法
class Doghead(object):
    def __init__(self,name,age):
        self.name =name
        self.age = age
    def __call__(self, eat):
        print('My name is %s and %s year' % (self.name,self.age))
        print('I like  %s' % eat)
p = Doghead('Bob', 3)
p("小明”")
4,dict 查看类或对象中的所有成员
class cc:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def func(self):
        print('类方法')
    def hhh(self):
        for k, v in self.__dict__.items():
            print(k, v)
#查看类成员
print('类成员:',cc.__dict__)
#查看对象成员
i = cc("jack",12)
print('对象成员',i.__dict__)
#调用定义的__dict__方法获取成员
i.hhh()  

5,doc 每个对象都会有一个__doc__属性,用于描述该对象的作用,相当于注解
class ddd:
    '''类的描述'''
    def Myddd(self):
        '''方法的描述'''
        print('Method description')
print(ddd.__doc__)
print(ddd.Myddd.__doc__)
6,new 生成一个对象,new__优先于__init,如果定义__new__方法有返回值才会调用__init__,反之则不会调用
class User(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
        print("调用__init__方法:",self.name,self.age)

    def __new__(cls, *args, **kwargs):
        print("__new__",args,kwargs)
        pass
d = User('jack',30)

7,del 析构方法,删除无用的内存对象(当程序结束会自动自行析构方法)
class Doghaed(object):
    def __init__(self,name):
        self.name =name
        print("__init__方法被调用")
    def __del__(self):
        print("__del__方法被调用")
        print("python解释器开始回收%s对象了" % self.name)
p = Doghaed('Bob')
del p
8,__all__方法,可用于模块导入时限制

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值