python 历险记之面向对象——一个 Java 程序员的告白(二)

 

前言

上篇文章 中,我使用了与 java类比 以及 代码实例 的方式涉及了 python 3 中 string数据结构(Dict, List, 元组)等重要的主题。
今天我会继续探险,去征服 python 3 中的面向对象, let's go 让我们出发吧!

类和对象

刚接触 python 中的类和对象,我也和大多数小伙伴一样迷茫,不知道它和我所熟知的 java 都有什么异同点,为此我还提出了一大堆问题

  1. 如何创建和实例化类?
  2. 是否和 java 一样有访问修饰符,分为几个级别?
  3. 构造函数该怎么写?
  4. 怎么进行 class 的继承?

下面就一一来探索这些疑惑。

类的定义和实例化

在 java 中要创建一个类就必须要使用 class 关键字,要将类实例化,创建一个对象,可以使用 new 关键字。在 python 中是怎么样的呢?

先看代码

class Person():   """这个叫做定义体,用来解释类的用途"""  print(Person) #  <class '__main__.Person'> # 由于是在程序顶层定义的,它的全名就是 '__main__.Person'  person = Person()  print(person) #  <__main__.Person object at 0x000000000219A1D0>

要定义一个类(class) 只要将 class 关键字放在前面即可,类内部也可以像 java 似的定义变量和函数,这个后面再看。

实例化一个类,也就是创建一个对象,并不需要使用 new 关键字,只需将 class 当做函数来调用就可以啦,是不是比 java 简洁不少。

了解了定义和实例化类,还有两个问题:

  1. 要判断一个对象是不是某个类的实例该怎么做呢?用 isinstance
print(isinstance (person, Person)) # True
  1. 判断对象是什么类型,该怎么做? 用 type
print(type(person)) # <class '__main__.Person'>

属性

上面的代码,光有一个空对象是干不了任何事情的,我们也要像 java 一样为其定义属性和方法。
java 是不能动态定义一个变量的,必须要把它放在 class 中预先定义好才可以用;而在 python 中这却不是问题,不信看代码~

class Person():   """这个叫做定义体,用来解释类的用途"""  person = Person()  person.age = 5 print(person.age)

虽然在对 Person class 定义时没有任何属性的声明,但在实例化后依然可以添加 age 属性,而且也并没有看到如 java 中 publicprivate 等访问修饰符的存在, python 中有没有这些概念呢?还真有,变量默认就是 

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信