看到别人的解释,之前的疑惑茅塞顿开,Python3 __init__和__str__
2018-02-11 18:00
323 查看
# -*- coding:utf-8 -*-
class TestClass(): #建一个类,试试
def __init__(me, name, gender): #定义方法有三个参数,第一个me相当于self,就是根据类创建的实例.
me.name = name
me.gender = gender #这个意思是实例的属性(实例.属性),由参数gender来提供
print("hello world") #这个打印hello world,用来证明,创建实例时,__init__自动调用,初始化实例属性,并且打印#hello world
testclass = TestClass('wuq','female') ----------->创建实例的同时就打印了'hello world',创建实例时的参数和__init__方法初始的参数应一致
print(testclass.name)---------->'wuq'
print(testclass.gender)--------->'female'
感谢知乎某匿名网友.
另外__str__的进一步理解,和__init__一样,在创建实例时就进行了
# -*- coding:utf-8 -*-
class TestClass(): #建一个类,试试
def __init__(self, name, gender):
self.name = name
self.gender = gender
print("hello world") #这个打印hello world,用来证明,创建实例时,__init__自动调用,初始化实例属性,并且打印#hello world
def __str__(self):
'''
print('Name:%s, Gender:%s' % (self.name, self.gender)) #这个打印在创建实例时并没有进行,说明__str__和__init__的区别.__init__更多的理解为,创建实例的同时初始化实例的属性,实例的属性有__init__的参数提供
'''
return 'Name:%s, Gender:%s' % (self.name, self.gender) #创建实例时就已经进行了,只是返回给__str__
此时
如果是
testclass = TestClass('xubw','male')------>(创建实例的同时打印hello world)
那么
print(testclass)------>就是Name:xubw, Gender:male #__str__可以说是对创建的实例变量可以直接调用,此时调用的就是__str__方法,打印出__str__的内容
如果没有 testclass = TestClass('xubw','male')
直接
print(TestClass('xubw','male')) 同样------>Name:xubw, Gender:male (创建实例的同时打印hello world)
此外
__repr__是直接显示变量调用的,
当在命令行直接输入实例,显示实例时,
比如:
>>>testclass
<__main__.Student object at 0x109afb310>
将输出类似上面的结果...
这样的话,可以再定义一个__repr__和__str__相同的内容
def __repr__(self):
return 'Name:%s, Gender:%s' % (self.name, self.gender)
这样在命令行直接输入时就可以返回Name:xubw, Gender:male的结果了.
简单的方法是直接将__repr__ = __str__放在新一行内.
class TestClass(): #建一个类,试试
def __init__(me, name, gender): #定义方法有三个参数,第一个me相当于self,就是根据类创建的实例.
me.name = name
me.gender = gender #这个意思是实例的属性(实例.属性),由参数gender来提供
print("hello world") #这个打印hello world,用来证明,创建实例时,__init__自动调用,初始化实例属性,并且打印#hello world
testclass = TestClass('wuq','female') ----------->创建实例的同时就打印了'hello world',创建实例时的参数和__init__方法初始的参数应一致
print(testclass.name)---------->'wuq'
print(testclass.gender)--------->'female'
感谢知乎某匿名网友.
另外__str__的进一步理解,和__init__一样,在创建实例时就进行了
# -*- coding:utf-8 -*-
class TestClass(): #建一个类,试试
def __init__(self, name, gender):
self.name = name
self.gender = gender
print("hello world") #这个打印hello world,用来证明,创建实例时,__init__自动调用,初始化实例属性,并且打印#hello world
def __str__(self):
'''
print('Name:%s, Gender:%s' % (self.name, self.gender)) #这个打印在创建实例时并没有进行,说明__str__和__init__的区别.__init__更多的理解为,创建实例的同时初始化实例的属性,实例的属性有__init__的参数提供
'''
return 'Name:%s, Gender:%s' % (self.name, self.gender) #创建实例时就已经进行了,只是返回给__str__
此时
如果是
testclass = TestClass('xubw','male')------>(创建实例的同时打印hello world)
那么
print(testclass)------>就是Name:xubw, Gender:male #__str__可以说是对创建的实例变量可以直接调用,此时调用的就是__str__方法,打印出__str__的内容
如果没有 testclass = TestClass('xubw','male')
直接
print(TestClass('xubw','male')) 同样------>Name:xubw, Gender:male (创建实例的同时打印hello world)
此外
__repr__是直接显示变量调用的,
当在命令行直接输入实例,显示实例时,
比如:
>>>testclass
<__main__.Student object at 0x109afb310>
将输出类似上面的结果...
这样的话,可以再定义一个__repr__和__str__相同的内容
def __repr__(self):
return 'Name:%s, Gender:%s' % (self.name, self.gender)
这样在命令行直接输入时就可以返回Name:xubw, Gender:male的结果了.
简单的方法是直接将__repr__ = __str__放在新一行内.
相关文章推荐
- 关于python的_init_()方法的一点解释
- python内置函数__init__及__str__的区别
- python 中的 __init__()解释
- 看到别人的Python爬虫博客,自己也模仿着写一个,顺便练习一下python
- Python中关于类和函数的初体验之"__init__"和"__str__"不是"_init_"和"_str_"
- (python基础)__init__()方法、打印id、__str__()方法
- python内置函数__init__及__str__的区别
- 理解python中的__str__, __call__, __init__, __getattr__
- python内置函数__init__及__str__的区别
- Python的类,类的继承,类中__init__( ),__str__( ),__del__( ),类中的self
- 深入Python(2): __init__.py 用法
- python 里的import 和__init__
- python self的解释
- Python中的__new__、__init__、__call__三个特殊方法
- python重载父类的__init__方法
- python int与str转换
- 修饰符在python函数中的用法详细解释
- PYTHON编码处理-str与Unicode的区别
- 大家都在学Python,你和别人的差距在哪?
- 数据结构算法经常看到的形如"int InitStack(Stack &S)"和"int Empty(Stack S)"的解释