从 non-parent mixin class 获取属性
Obtain attributes from a non-parent mixin class
我有一个 class“TrackPage”,它是一个网页 class,其中包含从该页面获取的信息,例如曲目标题 URL 和文件 - 从页面下载的文件。
track 属性本身是一个 class“Track”,它应该从调用它的 TrackPage(如标题,但不是 URL)中获取一些属性值,但也有它的自己的属性,如长度、尺寸等:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track()
class Track:
def __init__(self):
self.track_title = # Take TrackPage attribute
self.file = # Take TrackPage attribute
self.length = # Obtained through processing TrackPage attribute file
self.size = # Obtained through processing TrackPage attribute file
根据我的阅读,似乎使用包含我想要的 TrackPage 属性的 mixin class 是可行的方法,但我找不到与我正在尝试的类似的示例做。
对于这样的场景,构建我的 classes 的最佳方式是什么?
您至少有两个选择。
首先是将TrackPage
实例传入,收集你想要的属性:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track(self)
class Track:
def __init__(self, tp):
self.track_title = tp.track_title
self.file = tp.file
self.length = tp.file.length # or however
self.size = tp.file.size # or however
第二种是仅保留 TrackPage
实例并在需要时引用属性:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track(self)
class Track:
def __init__(self, tp):
self.track_page = tp
def get_file(self):
return self.track_page.file
我有一个 class“TrackPage”,它是一个网页 class,其中包含从该页面获取的信息,例如曲目标题 URL 和文件 - 从页面下载的文件。
track 属性本身是一个 class“Track”,它应该从调用它的 TrackPage(如标题,但不是 URL)中获取一些属性值,但也有它的自己的属性,如长度、尺寸等:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track()
class Track:
def __init__(self):
self.track_title = # Take TrackPage attribute
self.file = # Take TrackPage attribute
self.length = # Obtained through processing TrackPage attribute file
self.size = # Obtained through processing TrackPage attribute file
根据我的阅读,似乎使用包含我想要的 TrackPage 属性的 mixin class 是可行的方法,但我找不到与我正在尝试的类似的示例做。
对于这样的场景,构建我的 classes 的最佳方式是什么?
您至少有两个选择。
首先是将TrackPage
实例传入,收集你想要的属性:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track(self)
class Track:
def __init__(self, tp):
self.track_title = tp.track_title
self.file = tp.file
self.length = tp.file.length # or however
self.size = tp.file.size # or however
第二种是仅保留 TrackPage
实例并在需要时引用属性:
class TrackPage(BasePage):
def __init__(self):
self.track_title = 'foo'
self.url = 'www.bar.com'
self.file = 'baz.mp3'
self.track = Track(self)
class Track:
def __init__(self, tp):
self.track_page = tp
def get_file(self):
return self.track_page.file