子类中的列表属性更新

时间:2016-01-04 17:47:25

标签: python oop

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']

如果可能的话,这应该在'类'级别上解决,因为下面会有多重继承。

2 个答案:

答案 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 ) {