python3x类方法

python3x类方法,python,class,python-3.x,subclass,Python,Class,Python 3.x,Subclass,我目前正在学习课程的基础知识,我提出了一些基本代码,如下所示: 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 se

我目前正在学习课程的基础知识,我提出了一些基本代码,如下所示:

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实际返回正方形的周长

另外,我还有一个问题:
除了_uinit和_ustr之外,还有其他类方法吗?如果是这样的话,您能列出它们吗?这样我就可以开始研究它们了。

使用self访问实例变量


两件事,缩进的初始形状和添加自我。采用边缘法和面积法

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(self):
        return self.side_length * 4
    def area(self):
        return self.side_length ** 2

class circle(shape):
    def __init__(self, radius):
        self.num_sides = 1
        self.type = 'ellipsis'
        self.radius = radius

shape1 = square(5)
print( shape1.perim())

如图所示,您将遇到一些问题。如果您试图将circle和square作为shape的子集集类,则需要缩进这两个子类。另外,在类圆形和方形上,你真的不需要形状。还请注意我注释为不需要的内容

这不出来,因为我张贴它。类形状对象:没有显示,子类没有缩进,我似乎无法使它显示

类shapeobject: def initself,num_边,类型: self.num\u sides=num\u sides self.type=type

class square:

    def __init__(self, side_length):
        #self.num_sides = 4
        #self.type = 'regular quadrilateral'
        self.side_length = side_length

    def perim(self):
        return self.side_length * 4
    def area(self):
        return self.side_length ** 2

class circle: 
    def __init__(self, radius):
        #self.num_sides = 1
        #self.type = 'ellipsis'
        self.radius = radius

    def area (self):
        return 3.14 * self.radius ** 2



shape2 = circle (5)
print ('test of circle: ',shape2.area ())

shape1 = square(5)
print('test of square:  ', shape1.perim())

你忘了使用perim和area方法中的self如果你得到了,你肯定没有写shape1.perim,但是shape1.perim。你的第二个问题是用Python回答的。感谢@glglglNote的链接,uuu init_uuuuu和uuu str_uuu不是类方法。你还需要self作为方法的参数
class square:

    def __init__(self, side_length):
        #self.num_sides = 4
        #self.type = 'regular quadrilateral'
        self.side_length = side_length

    def perim(self):
        return self.side_length * 4
    def area(self):
        return self.side_length ** 2

class circle: 
    def __init__(self, radius):
        #self.num_sides = 1
        #self.type = 'ellipsis'
        self.radius = radius

    def area (self):
        return 3.14 * self.radius ** 2



shape2 = circle (5)
print ('test of circle: ',shape2.area ())

shape1 = square(5)
print('test of square:  ', shape1.perim())