如何从 python 中的另一个模块调用 setter
how to call setter from another module in python
我是 Python 的新手,我想从另一个模块调用 getter
menu.py
class settings(object):
def __init__(self):
self.fbType=None
@property
def fbType(self):
return self.fbType
@fbType.setter
def fbType(self, value):
self.fbType = value
def main():
print(20 * '-')
print(' M E N U')
print(30 * '-')
print('1. page')
print('2. event')
print(20 * '-')
choice = input('Enter your choice [1-5] : ')
choice = int(choice)
if choice == 1:
fbType = 'page'
elif choice == 2:
fbType = 'event'
else:
print('seleccion incorrecta')
if __name__ == '__main__':
main()
fb.py
import menu
from menu import settings
def main():
menu.main()
m = settings()
l1 = fb.data(m.fbType(), 'python', 1)
print(l1)
if __name__ == '__main__':
main()
给我的错误如下
File "C:\Users\gabri\PycharmProjects\borrar\menu.py", line 10, in fbType
self.fbType = value
[Previous line repeated 493 more times]
拜托,你能帮我解决这个错误吗?提前致谢
修复您的代码:
class settings(object):
def __init__(self):
self._fbType = None
@property
def fbType(self):
return self._fbType
@fbType.setter
def fbType(self, value):
self._fbType = value
否则/!\无限循环,这里:
class settings(object):
def __init__(self):
self.fbType = None
@property
def fbType(self):
return self.fbType
@fbType.setter
def fbType(self, value):
self.fbType = value
m = settings()
m.fbType = 1
输出:
RecursionError: maximum recursion depth exceeded
你调用def fbType(self, value)
是一个无限循环,self.fbType = value
再次调用setter....一次又一次...
做:
m.fbType # not m.fbType() to get
m.fbType = 1 # not m.fbType(1) to set
getter和setter中的这些python只用于治疗前后
getter 或 setter(或者通过 fbType 重命名属性 _fbType)。
你可以做到:
class settings(object):
def __init__(self):
self._fbType = None
@property
def fbType(self):
print('get fbType:', self._fbType)
return self._fbType
@fbType.setter
def fbType(self, value):
print('set fbType:', self._fbType, 'to', value)
self._fbType = value
m = settings()
m.fbType = 1
m.fbType
输出:
set fbType: None to 1
get fbType: 1
我是 Python 的新手,我想从另一个模块调用 getter
menu.py
class settings(object):
def __init__(self):
self.fbType=None
@property
def fbType(self):
return self.fbType
@fbType.setter
def fbType(self, value):
self.fbType = value
def main():
print(20 * '-')
print(' M E N U')
print(30 * '-')
print('1. page')
print('2. event')
print(20 * '-')
choice = input('Enter your choice [1-5] : ')
choice = int(choice)
if choice == 1:
fbType = 'page'
elif choice == 2:
fbType = 'event'
else:
print('seleccion incorrecta')
if __name__ == '__main__':
main()
fb.py
import menu
from menu import settings
def main():
menu.main()
m = settings()
l1 = fb.data(m.fbType(), 'python', 1)
print(l1)
if __name__ == '__main__':
main()
给我的错误如下
File "C:\Users\gabri\PycharmProjects\borrar\menu.py", line 10, in fbType
self.fbType = value
[Previous line repeated 493 more times]
拜托,你能帮我解决这个错误吗?提前致谢
修复您的代码:
class settings(object):
def __init__(self):
self._fbType = None
@property
def fbType(self):
return self._fbType
@fbType.setter
def fbType(self, value):
self._fbType = value
否则/!\无限循环,这里:
class settings(object):
def __init__(self):
self.fbType = None
@property
def fbType(self):
return self.fbType
@fbType.setter
def fbType(self, value):
self.fbType = value
m = settings()
m.fbType = 1
输出:
RecursionError: maximum recursion depth exceeded
你调用def fbType(self, value)
是一个无限循环,self.fbType = value
再次调用setter....一次又一次...
做:
m.fbType # not m.fbType() to get
m.fbType = 1 # not m.fbType(1) to set
getter和setter中的这些python只用于治疗前后 getter 或 setter(或者通过 fbType 重命名属性 _fbType)。
你可以做到:
class settings(object):
def __init__(self):
self._fbType = None
@property
def fbType(self):
print('get fbType:', self._fbType)
return self._fbType
@fbType.setter
def fbType(self, value):
print('set fbType:', self._fbType, 'to', value)
self._fbType = value
m = settings()
m.fbType = 1
m.fbType
输出:
set fbType: None to 1
get fbType: 1