में विरासत वर्ग परिवर्तनीय संशोधन मैं एक कक्षा वर्ग को कक्षा चर को संशोधित करना चाहता हूं जो इसे अपने माता-पिता से प्राप्त होता है।पायथन
मैं की तर्ज पर कुछ करने के लिए करना चाहते हैं:
class Parent(object):
foobar = ["hello"]
class Child(Parent):
# This does not work
foobar = foobar.extend(["world"])
और आदर्श है:
Child.foobar = ["hello", "world"]
मैं कर सकता:
class Child(Parent):
def __init__(self):
type(self).foobar.extend(["world"])
लेकिन फिर हर बार जब मैं का दृष्टांत चाइल्ड का एक उदाहरण, "दुनिया" सूची में शामिल हो जाता है, जो अवांछित है। मैं इसे आगे संशोधित कर सकता हूं:
class Child(Parent):
def __init__(self):
if type(self).foobar.count("world") < 1:
type(self).foobar.extend(["world"])
लेकिन यह अभी भी हैक है क्योंकि मुझे इसे काम करने से पहले बच्चे के उदाहरण को तुरंत चालू करना होगा।
क्या कोई बेहतर तरीका है?
यह शानदार रूप से शानदार और सरल है! इसके अलावा, अगर बच्चे की विशेषता का प्रारंभ मूल्य माता-पिता की विशेषता के समान होना चाहिए, तो प्रतिलिपि आयात गहरी प्रतिलिपि से उपयोग करना उपयोगी होगा; foobar = deepcopy (parent.foobar) ' – zen11625