1)为什么我们需要从Object调用类?
你能提供一些很好的例子,说明从对象调用是必要的。我发现下面有一个但没有得到它。 在Python 2.7 x中,这应该如下所示
class Foo:
pass
class Bar(Foo):
pass
2)我found,在Python 3.x中,没有必要从对象中明确派生?这是什么意思 ?这是否意味着我们不需要打电话给Bar(Foo)?很难理解为新手。请解释一下。
3)在Python 2.7中
class Boat():
pass
my_boat = Boat() #instantiate object
my_boat2 = Boat() #instantiate object
print(my_boat)
print(my_boat2)
< main 。启用实例,位于0x0000000008DFEC88>
< main 。启用实例,位于0x0000000008DFECC8>
在Python 3.x中运行相同的代码给了我
< main .Boat object 位于0x000002406FF8E390>
< main .Boat 对象位于0x000002406FF8ECF8>
a)那么我可以得出结论,Python 3.x中的实例和Object是相同的吗? 虽然经过不同来源的许多阅读后我明白了
实例只是Class的蓝图。
Class也是一个Object。当我们实例化一个类时,它就是一个对象。
Python中的所有内容都是一个对象
如果我的理解是错误的,请纠正我。 因此,按照上述理解,很难理解为什么Object和实例是同一个东西。请告诉我这个。
答案 0 :(得分:1)
我建议你看一下A Byte of Python,面向对象编程的章节。
总结: 类是制作对象的蓝图。您在第一个示例中所做的事情称为继承。这绝不是必需的,也是完全可选的。
class SchoolMember:
'''Represents any school member.'''
age = some_age
pass
class Teacher(SchoolMember):
'''Represents a teacher.'''
pass
class Student(SchoolMember):
'''Represents a student.'''
pass
来自Python的字节:
这种情况下的SchoolMember类被称为基类或 超类。教师和学生类称为派生类 类或子类。
现在每位老师和每个学生都会有一些年龄。但同样,它并不是一件好事。你可以这样做:
class Teacher():
'''Represents a teacher.'''
age = some_age
pass
class Student():
'''Represents a student.'''
age = some_age
pass
并在没有继承的情况下获得相同的结果。
关于你的问题3a:
类的实例称为对象。在其他语言中创建一个对象并实例化它是两个不同的步骤,但在python中这些步骤同时完成,因此一个对象也将始终是一个实例。
您目前的理解存在一些缺陷:
实例只是Class的蓝图。
正如我所说,一个类是一个对象的蓝图。
Class也是一个Object。当我们实例化一个类时,它就是一个对象。
对象也是实例。当我们从类中创建一个对象时,它会自动实例化。
Python中的所有内容都是一个对象
这根本没有意义。 python中的所有内容都基于对象,但是当您对此有更深入的了解时,这是值得担心的事情。
我希望我能帮助你更好地理解。我真的建议你看看A Byte of Python。它对面向对象编程有很好的解释。