【发布时间】:2017-07-20 19:24:01
【问题描述】:
所以我试图在 Python 中掌握 OOP 的窍门。我遇到的问题是在为子类初始化对象时,我仍然需要输入我不需要的信息。
具体来说,我正在尝试创建一个 Person 对象,而无需指定 can_speak。所以我可以这样做:
John = person("John Anderson")
无需在初始化过程中输入can_speak。
class Animal(object):
def __init__(self, name, can_speak):
self.name = name
self.can_speak = False
class Dog(Animal):
pass
class Person(Animal):
def __init__(self, name, can_speak):
self.name = name
self.can_speak = True
Bob = Person("Bob the Builder", 3.141)
print(Bob.name)
print(Bob.can_speak)
# Bob the Builder
# True
Sam = Dog("Sam the Mutt", 0.00059)
print(Sam.name)
print(Sam.can_speak)
# Sam the Mutt
# False
在这里,我必须将一些内容作为第二个输入放入初始化中,否则会出错。像这样浪费。
【问题讨论】:
-
def __init__(self, name, can_speak=False):默认参数。 -
您不必如果已修复,则必须将
can_speak作为参数:只需def __init__(self, name):
标签: python python-3.x oop