Я пытаюсь создать класс многоугольника, который возвращает область и периметр, если заданы стороны и длина с пользовательского ввода. Тем не менее, он не принимает две переменные, которые я пытаюсь передать в метод __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