簡體   English   中英

如何從python中的子類訪問父類的成員和變量?

[英]How to access the member and variable of superclass from the subclass in python?

我有一個密碼

class Trigger(object):
    def evaluate(self,story):
        Trigger.stroy=story
        WordTrigger.isWordin(story)
        raise NotImplementedError

class WordTrigger(Trigger):
    def __init__(self,word):
        self.word=word

    def isWordin(self, text):
        rep = text.replace(string.punctuation, '')
        toLower = rep.lower()
        text = toLower.split(' ')
        if(text in self.word):
            return True
        else:
            return False

class TitleTrigger(WordTrigger):
     ...

可變的story是一堂課

class NewsStory: def __init__(self,guid, title, subject, summary, link): self.guid=guid self.title=title self.subject=subject self.summary=summary self.link=link def getGuid(self): return self.guid def getTitle(self): return self.title def getSubject(self): return self.subject def getSummary(self): return self.summary def getLink(self): return self.link

story=NewsStory(...)如何在子類TitleTrigger訪問變量story及其內置的def函數?

我可以想到兩種方法。 一種使用類變量,另一種使用初始化變量。 這是一個同時執行這兩個操作的示例:

class NewsStory: 
    def __init__(self,guid, title, subject, summary, link): 
        self.guid=guid 
        self.title=title 
        self.subject=subject 
        self.summary=summary 
        self.link=link 

    def getGuid(self): 
        return self.guid 

    def getTitle(self): 
        return self.title 

    def getSubject(self): 
        return self.subject 

    def getSummary(self): 
        return self.summary 

    def getLink(self): 
        return self.link

class Trigger(object):
    story = NewsStory("Guide","title", "subject", "summary","link")

    def __init__(self):
        self.mystory = NewsStory("Guide","title", "subject", "summary","link")

    def evaluate(self,story):
        Trigger.story=story
        WordTrigger.isWordin(story)
        raise NotImplementedError

class WordTrigger(Trigger):
    def __init__(self,word):
        super(WordTrigger, self).__init__()
        self.word=word

    def isWordin(self, text):
        rep = text.replace(string.punctuation, '')
        toLower = rep.lower()
        text = toLower.split(' ')
        if(text in self.word):
            return True
        else:
            return False

class TitleTrigger(WordTrigger):
    story = WordTrigger.story

    def __init__(self, word):
        super(TitleTrigger, self).__init__(word)

if __name__ == "__main__":
    print(TitleTrigger.story)

    tt = TitleTrigger("hello")
    print(tt.mystory)

story變量是一個類變量,而mystory變量是一個可訪問的實例變量,因為您可以使用super(WordTrigger, self).__init__()之類的方法初始化超類,然后才可以使用超類變量。 希望對您有所幫助

編輯:要從NewsStory訪問和更改標題,您可以執行以下操作:

print(tt.mystory.title)
tt.mystory.title = "New title"
print(tt.mystory.title)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM