|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.对于如下代码,我想初始化两个属性,当时运行后会报错,是因为继承的str是不可变类型的吗?
- class CapStr(str):
- def __init__(self,string,string2):
- self.string = string
- self.string2 = string2
复制代码
- >>> a = CapStr('a','b')
- Traceback (most recent call last):
- File "<pyshell#41>", line 1, in <module>
- a = CapStr('a','b')
- TypeError: decoding str is not supported
复制代码
2.对于init方法中除self以外的那些可选参数,如果只有一个,且不在init中对这个参数作其他操作,是不是会默认把这个参数赋值给实例变量?
如下:
- class CapStr(str):
- def __init__(self,string):
- pass
复制代码
- >>> a = CapStr('a')
- >>> a
- 'a'
复制代码
1. 因为字符串类不支持两个初始化参数,所以应该这样:
- >>> class CapStr:
- def __init__(self, string, string2):
- self.string = string
- self.string2 = string2
-
- >>> CapStr('a', 'b')
- <__main__.CapStr object at 0x000001C46EF62640>
复制代码
2. 并不是,只是你的 CapStr 类恰好继承了 str 类:
- >>> class A(str):
- def __init__(self, s):
- pass
-
- >>> A('a')
- 'a'
- >>> class B:
- def __init__(self, s):
- pass
-
- >>> B('b')
- <__main__.B object at 0x000001CCBAA97100>
复制代码
|
|