假设我有一节课:
class Person:
def __init__(self, name):
self.name = name
如果我想实例化Person
,我可以:
me = Person("António")
但是如果我只想实例化Person
如果name
的类型是str
呢?
我试过这个:
class Person:
def __init__(self, name):
if type(name) == str:
self.name = name
但当我这么做的时候:
me = Person("António")
print(me.name)
you = Person(1)
print(you.name)
我明白了:
所以现在发生的是:
name
是str
,则实例有一个.name
方法name
不是str
,则实例没有.name
方法但我真正想要的是,如果名称不是str
,就停止实例化
换句话说,我希望不可能从Person
类中创建具有非str
name
的对象。你知道吗
我该怎么做?你知道吗
怎么样:
您可以使用工厂检查参数,如果一切正常或出现错误,则返回
Person
对象:也许是这样的:
鉴于:
引发异常:
您应该使用
factory design pattern
。您可以阅读更多关于它的信息here。简单来说:创建将检查条件的类/方法,并仅在满足这些条件时返回新的类实例。你知道吗
相关问题 更多 >
编程相关推荐