我想创建一个多边形类,当给定用户输入的边和长度时,该类将返回区域和边界。但是,它并不需要我试图传入__init__
方法的两个变量。边和长度必须是私密的,并且必须通过用户输入来接收。用户输入不传递给__init__
import math
class Polygon:
use = (input("Enter in the sides and length of sides seperated by a comma"))
ans = use.split(",")
__numofSides = ans[0]
__sideLength = ans[1]
def __init__(self, __numofSides, __sideLength):
self.__numofSides = __numofSides
self.__sideLength = __sideLength
def get__numofSides(self):
self.__numofSides = ans[0]
return __numofSides
def get__sideLength(self):
self.__sideLength = ans[1]
return __sideLength
def perimeter(self, __numofSides,__sideLength):
peri = self. __numofSides * self.__sideLength
return peri
def area(self, __numofSides, __sideLength):
area = (((__sideLength **2) * __numofSides)/(tan(4) *(math.pi/__numofSides)))
return area
def __str___(self,):
print("Number of Sides: {}\n Length of Sides: {}\n" \
"Perimeter is: {}\n Area is: {}".format(__numofSides,__sideLength,peri,area))
def main():
p1 = Polygon()
p1.perimeter()
p1.area()
p1.__str__()
main()
如果您打算发布Python代码,请确保您准确地重现您的缩进。严重缩减的Python代码是无稽之谈。 – khelwood
不要使用两个下划线,它会使Python解释器破坏名称。 –
*'边和长度必须是私人的“* - 那么Python可能不是您的语言,即使使用'__name_mangling'也是可以访问的。如果您希望它不可变,请考虑子类化'namedtuple'。想要受保护的属性,请使用'@ property'。 – jonrsharpe