Tôi đang viết một chuỗi các menu văn bản. Với lớp và lớp con bên dưới, nó chạy không có vấn đề gì. Nhưng tôi đang xem xét mã hóa của tôi và tôi tự hỏi .... là nó ok mà tôi đã không sử dụng def __init__(self)
trong các lớp học? Tôi có nên đặt các thành viên dữ liệu trong số def __init__(Self):
như self.images =(), self.options =() không? Nếu tôi đã làm điều đó thì tôi không thể sử dụng mô-đun abc để kiềm chế, đúng không?Lớp Python mà không sử dụng def __init __ (tự)
class BaseMenu(object):
__metaclass__ = abc.ABCMeta
@abc.abstractproperty
def options(self):
pass
@abc.abstractproperty
def menu_name(self):
pass
def display(self):
header = "FooBar YO"
term = getTerminalSize()
#sys.stdout.write("\x1b[2J\x1b[H")
print header.center(term, '*')
print self.menu_name.center(term, '+')
print "Please choose which option:"
for i in self.options:
print(
str(self.options.index(i)+1) + ") "
+ i.__name__
)
value = int(raw_input("Please Choose: ")) - 1
self.options[value](self)
class Servers(BaseMenu):
menu_name = "Servers"
images =()
foo =()
def get_images(self):
if not self.images:
self.images = list_images.get_images()
for img in self.images:
print (
str(self.images.index(img)+1) + ") "
+ "Name: %s\n ID: %s" %
(img.name, img.id)
)
def get_foo(self):
if not self.foo:
self.foo = list_list.get_list()
for list in self.foo:
print "Name:", list.name
print " ID:", list.id
print
def create_servers(self):
create_server.create(self)
options = (
get_images,
get_foo,
create_servers
)