Python(2.7)中是否可以更新派生构造函数中的列表属性?
请考虑以下示例:
class Parent(object):
def __init__(self, data):
self.data = data
value1 = 'P1'
self.value2 = 'P2'
self.parentList= [value1, self.value2]
我的parentList
初始化为:['P1', 'P2']
我希望我的Child
类构造函数更新存储在parentList
中的一个值。
class Child(Parent):
def __init__(self, data):
Parent.__init__(self, data)
value3 = 'C3'
value4 = 'C4'
#how update parentList?
self.childList = [value3, value4, ???]
预期行为是更新 value2
以获得childList
,如下所示:
childList= ['C3','C4', 'P1, 'P2_modified']
如果可能的话,这应该在'类'级别上解决,因为下面会有多重继承。
答案 0 :(得分:0)
Python中访问修饰符的方式并不多。拥有子对象后,您应该能够随意访问父属性。例如:
~/Desktop> cat a.py
class P(object):
def __init__(self):
self.l = [1, 2]
class C(P):
def __init__(self):
P.__init__(self)
self.l[1] = "2mod"
self.l.append(3)
print C().l
~/Desktop> python a.py
[1, '2mod', 3]
除此之外,它可能是您特定的类层次结构的问题。如果列表中的每个元素都可以通过某个键标识,则可以使用字典,并且层次结构中的每个类可能只是独立于其他类添加自己的键,或者更新现有键(尽管它可能取决于顺序指定了基类,它变得更复杂了。)
答案 1 :(得分:0)
我并不完全遵循你想要实现的目标。
请参阅内联注释,了解您可以对所显示的数据结构执行的一些示例。
angular
.module( "FuelTeamworkHelperApp" )
.controller( "AdminSettingsController", AdminSettingsController );
//---
AdminSettingsController.$inject = [ "$scope", "$rootScope", "$state", "$stateParams", "$filter", "$resource", "$q", "growl", "dialogs", "FuelTeamworkHelperConfig", "AppSettings", "SowCustomListSections" ];
function AdminSettingsController ( $scope, $rootScope, $state, $stateParams, $filter, $resource, $q, growl, dialogs, FuelTeamworkHelperConfig, AppSettings, SowCustomListSections ) {