在python中如何将值传递给@属性?
因此,我正在编写一个python脚本来修改电视节目标题。这比任何事情都更需要练习。我试图使用@property decorator,但我有一个错误的想法,当你使用“var.property”时,我认为var会传递给属性。。。因此,我试图让splitName()能够使用基类中的hasDots属性,但我不确定如何将name Var传递到属性中。我知道我可以用一种方法做到这一点,但我正在努力学习如何使用属性。一旦我能让基类正常工作,splitName()方法将成为主要方法 在此方面的任何帮助都将不胜感激。另外,我对python还很陌生,所以如果我正在做任何“非python”的事情,请告诉我在python中如何将值传递给@属性?,python,oop,decorator,Python,Oop,Decorator,因此,我正在编写一个python脚本来修改电视节目标题。这比任何事情都更需要练习。我试图使用@property decorator,但我有一个错误的想法,当你使用“var.property”时,我认为var会传递给属性。。。因此,我试图让splitName()能够使用基类中的hasDots属性,但我不确定如何将name Var传递到属性中。我知道我可以用一种方法做到这一点,但我正在努力学习如何使用属性。一旦我能让基类正常工作,splitName()方法将成为主要方法 在此方面的任何帮助都将不胜感
exceptibleExts = ['.avi','.mkv','mp4']
class Base(object):
def __init__(self, source):
self.source = source
self.isTvShow()
# this method will return the file name
def fileName(self):
for name in self.source:
name, ext = os.path.splitext(name)
yield name, ext
@property
def isTvShow(self):
names = self.fileName()
for name in names:
if str(name[1]) in exceptibleExts and str(name[1]).startswith('.') == False:
return True
else:
return False
@property
def hasDots(self):
names = self.fileName()
for name in names:
if '.' in str(name[0]):
return True
else:
return False
@property
def hasDashes(self):
names = self.fileName()
for name in names:
if '-' in str(name[0]):
return True
else:
return False
@property
def startswithNumber(self):
names = self.fileName()
for name in names:
if str(name[0].lstrip()[0].isdigit()):
return True
else:
return False
@property
def hasUnderscore(self):
names = self.fileName()
for name in names:
if '_' in str(name[0]):
return True
else:
return False
class names(Base):
def __init__(self, source):
self.source = source
#pass
self.splitName()
#this method returns true if the show title is in the file name... if not it will return false
def hasShowTitle(self):
pass
def splitName(self):
#names = self.fileNames
showInfo = {}
for name in self.fileName():
print name.hasDots
在学习时仔细阅读文档是个好主意 看看这里的第三个代码示例 这就是如何为使用内置
property
decorator定义的属性定义setter和deleter
附言:这里有相应的Python 2文档:什么是“您想做什么”?代码没有做什么是您希望它做的?我试图让splitName()能够从基类使用hasDots属性,但我不确定如何将name Var传递到属性中。我知道我可以用一种方法来实现这一点,但我正在尝试学习如何使用属性。试着在开始时用过程式编写代码。现在你的代码很难看,很难理解你想做什么。例如,“For name in self.fileName()”名称是字符串,它没有方法hasDots,使用camelCase不是phythonic。让我们试着从基础开始。谢谢你的回复。这是非常有帮助的。。。根据你的建议,我改变了我的编码结构。
class C:
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x