__init__, __name__, __new__, __all__, __doc__, __str__,

先读此博客

1.init

初始化函数,定义实例属性

2.name

name_ 是当前模块名

if __name__ == "__main__":
	main()
	代表仅调用此模块中的main(),导入的模块中有main()方法也不调用

3.new

只有新式类才能用,继承object都是新式类

1.新式类开始实例化时,new()方法会返回cls(cls指代当前类)的实例,然后该类的 init()方法作为构造方法会接收这个实例(即self)作为自己的第一个参数,然后依次传入__new__ ()方法中接收的位置参数和命名参数。

class A(object):
    pass


class B(A):
    pass


class C(B):
    def __new__(cls, *args, **kwargs):
        return super().__new__(cls, *args, **kwargs)

        # 等同于:
        # return B.__new__(cls, *args,**kwargs)
        # return A.__new__(cls, *args,**kwargs)
        # return object.__new__(cls, *args,**kwargs)

2.如果没有cls则init不会被调用,如果cls位置是其他类名,则调用这个类

class Bar(object):
    def __new__(cls,*agrs,**kwagrs):
        return Bar.__new__(Foo,*agrs,**kwagrs)

为静态方法
__new__参考此链接

4.all

from A import *
all = [ ……] ,对应*覆盖的模块、类、函数等
参考此

5.doc

调用类或函数中第一个未被赋值的字符串

class Student():
    '123'
print(Student().__doc__)
#123

6.str

把一个类实例变成字符串

用__str__
class Student():
    def __init__(self, name, age):
        self.name = name
        self.age =age
    def __str__(self):
        return '%s的年龄是%d' % (self.name, self.age)
print(Student('liu', 20))
#liu的年龄是20
不用__str__
class Student():
    def __init__(self, name, age):
        self.name = name
        self.age =age
    def print(self): #改变了这里
        return '%s的年龄是%d' % (self.name, self.age)
print(Student('liu', 20))
#<__main__.Student object at 0x00000000028280F0>

用__str__等效于
class Student():
    def __init__(self, name, age):
        self.name = name
        self.age =age
    def print(self):
        return'%s的年龄是%d' % (self.name, self.age)
print(Student('liu', 20).print())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值