Python中的对象和实例

时间:2016-07-30 09:48:15

标签: python-2.7 python-3.x object instance instantiation

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和实例是同一个东西。请告诉我这个。

1 个答案:

答案 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。它对面向对象编程有很好的解释。