我對Python(和stackoverflow)很新,我需要一些幫助。我有2類,如下Python,selenium webdriver - 我需要基類方法來返回其子類的類型。如何實現它?
class baseClass(object):
def __init__(self):
self.attribute = None
def baseMethod(self):
return 'xxx' + str(self.attribute)
class classA(baseClass):
field = "test"
def __init__(self):
self.attribute = "attribute value"
而且我想這樣做如下:
objectA = classA()
afterBaseMethod = objectA.baseMethod()
afterBaseMethod.field
但我發現了錯誤信息 AttributeError的:「海峽」對象有沒有屬性「場」
其實我想對於baseMethod()返回類型對象A(所以我的子類型)。 如何更改我的類定義以實現該目標?
對不起,夥計們,我不夠精確,我想做的事情。實際上我想在python中爲webdriver測試實現頁面對象。我的代碼如下。
from selenium import webdriver
########## classes definitions
class BasePageObject:
def __init__(self, driver):
self.locator = None
self.driver = driver
def getByLocator(self):
return self.driver.find_element_by_css_selector(self.locator)
class MainPage(BasePageObject):
def __init__(self, driver):
self.driver = driver
def getHeader(self):
# I expect here to receive HeaderPageObject, not WebElement (as returned by getByLocator())
return HeaderPageObject(self.driver).getByLocator()
class HeaderPageObject(BasePageObject):
def __init__(self, driver):
self.driver = driver
self.locator = '#header'
def doSomethingWithHeader(self):
pass
###########################
driver = webdriver.Firefox()
driver.get("https://www.linkedin.com")
mainPage = MainPage(driver)
header = mainPage.getHeader()
header.doSomethingWithHeader()
,當我運行它,我得到 header.doSomethingWithHeader() AttributeError的:「WebElement」對象有沒有屬性「doSomethingWithHeader」
它通常是有點半信半疑地有需要知道它的子類的類。你想在這裏完成什麼? – BrenBarn
我需要很多這樣的子類和baseMethod(個體經營)就能準確地對所有的人都以同樣的方式,但我需要它返回類從調用它的類型,因爲每個子類都將有自己的Fileds /方法,這將是在調用baseMethod()(在基類中定義)之後使用。 – donatelo
如何顯示你想要做的事情的代碼應該是有意義的? –