Python继承:有什么区别?
给定父类“a”Python继承:有什么区别?,python,inheritance,subclass,Python,Inheritance,Subclass,给定父类“a” Class A(object): def __init__(self,a,b): self.a = a self.b = b 在以下选项中创建子类“B”有什么区别 选择1 Class B(A): def __init__(self,a,b,c): self.a = a self.b = b self.c = c 选择2 Class B(A): def __init__(se
Class A(object):
def __init__(self,a,b):
self.a = a
self.b = b
在以下选项中创建子类“B”有什么区别
选择1
Class B(A):
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
选择2
Class B(A):
def __init__(self,a,b,c):
A.__init__(self, a, b)
self.c = c
在这种情况下,没有。但是如果
A.\uuuuu init\uuuuuuuu
加载了复杂的逻辑呢?你不想在B中重复所有这些
选项2的一个增强功能是使用super()
函数:
class B(A):
def __init_(self,a,b,c):
super(B, self).__init__(a, b)
self.c = c
在这种情况下,没有。但是如果
A.\uuuuu init\uuuuuuuu
加载了复杂的逻辑呢?你不想在B中重复所有这些
选项2的一个增强功能是使用super()
函数:
class B(A):
def __init_(self,a,b,c):
super(B, self).__init__(a, b)
self.c = c
第一个选项将类
A
(A
和b
)的成员初始化为类b
)
第二个选项使用A
的构造函数在初始化B
的成员之前初始化A
的成员
在Python中设计类的更好方法是
class A(object):
def __init__(self, a, b):
self._a = a
self._b = b
@property
def a(self):
return self._a
@property
def b(self):
return self._b
class B(A):
def __init__(self, a, b, c):
super(B, self).__init__(a, b)
self._c = c
@property
def c(self):
return self._c
成员名称中的
提到不应直接访问成员。decorator@property
为成员提供直接访问器
请注意,成员是只读的。此类没有指定设置器。例如,c
的setter可以声明如下
@c.setter
def c(self, c):
self._c = c
第一个选项将类
A
(A
和b
)的成员初始化为类b
)
第二个选项使用A
的构造函数在初始化B
的成员之前初始化A
的成员
在Python中设计类的更好方法是
class A(object):
def __init__(self, a, b):
self._a = a
self._b = b
@property
def a(self):
return self._a
@property
def b(self):
return self._b
class B(A):
def __init__(self, a, b, c):
super(B, self).__init__(a, b)
self._c = c
@property
def c(self):
return self._c
成员名称中的
提到不应直接访问成员。decorator@property
为成员提供直接访问器
请注意,成员是只读的。此类没有指定设置器。例如,c
的setter可以声明如下
@c.setter
def c(self, c):
self._c = c
它不应该是super(B,self)
而不是super(A,self)
?它不应该是super(B,self)
而不是super(A,self)
?