测试子类初始化方法的清晰度
Clarity on Testing subclass init method
我是面向对象的新手。
我正在尝试测试我的 RightPyramid init 方法,不确定是否有办法像我的
RightPyramid init 没有任何参数。
from typing import List
from abc import ABCMeta, abstractmethod
class Triangle(metaclass=ABCMeta):
def __init__(self, base: int, height: int) -> None:
assert base >= 0, "base must be greater or equal to 0"
assert height >= 0, "height must be greater or equal to 0"
self.base = base
self.height = height
@abstractmethod
def area(self) -> int:
pass
class RightPyramid(Triangle):
def __init__(self):
Triangle.__init__(self, 3, 2)
def area(self):
return 0.5 * self.base + self.height
测试RightPyramid,执行以下代码:
rp = RightPyramid()
实际上会调用RightPyramid.__init__()方法,self被实例替换并在rp变量中返回。
如果你想测试你的三角形基础 class 行为,你应该创建新的 class :
class TestInit(Triangle):
def __init__(self):
Triangle.__init__(self, -3, 2) # this should throw an assertion fail
t = TestInit()
我是面向对象的新手。 我正在尝试测试我的 RightPyramid init 方法,不确定是否有办法像我的 RightPyramid init 没有任何参数。
from typing import List
from abc import ABCMeta, abstractmethod
class Triangle(metaclass=ABCMeta):
def __init__(self, base: int, height: int) -> None:
assert base >= 0, "base must be greater or equal to 0"
assert height >= 0, "height must be greater or equal to 0"
self.base = base
self.height = height
@abstractmethod
def area(self) -> int:
pass
class RightPyramid(Triangle):
def __init__(self):
Triangle.__init__(self, 3, 2)
def area(self):
return 0.5 * self.base + self.height
测试RightPyramid,执行以下代码:
rp = RightPyramid()
实际上会调用RightPyramid.__init__()方法,self被实例替换并在rp变量中返回。
如果你想测试你的三角形基础 class 行为,你应该创建新的 class :
class TestInit(Triangle):
def __init__(self):
Triangle.__init__(self, -3, 2) # this should throw an assertion fail
t = TestInit()