Я в настоящее время обучения основ классов, и я пришел с каким-то основным кодом выглядит следующим образом:методов класса Python 3x
class shape(object):
def __init__(self, num_sides, type):
self.num_sides = num_sides
self.type = type
class square(shape):
def __init__(self, side_length):
self.num_sides = 4
self.type = 'regular quadrilateral'
self.side_length = side_length
def perim():
return side_length * 4
def area():
return side_length ** 2
class circle(shape):
def __init__(self, radius):
self.num_sides = 1
self.type = 'ellipsis'
self.radius = radius
Теперь, когда я печатаю следующее:
shape1 = square(5)
shape1.perim()
Я получаю следующий результат:
<bound method square.perim of <__main__.square object at 0x0000000003D5FB38>>
Что это? Как я могу заставить python фактически вернуть периметр квадрата?
Также у меня есть еще один вопрос: Существуют ли какие-либо методы класса, кроме __init__()
и __str__()
? Если да, можете ли вы перечислить их, чтобы я мог уйти и исследовать их?
вы забыли использовать 'self' из' 'perim' и area' методы – progo
Если вы получаете' <связанный метод square.perim из <__ main__ .square object на 0x0000000003D5FB38 >> ', вы наверняка не написали' shape1.perim() ', а' shape1.perim'. – glglgl
На ваши 2-й вопрос отвечает Python [отличная документация] (https://docs.python.org/3/reference/datamodel.html). – glglgl