前言
在上篇文章 中,我使用了与 java类比 以及 代码实例 的方式涉及了 python 3 中 string, 数据结构(Dict, List, 元组)等重要的主题。
今天我会继续探险,去征服 python 3 中的面向对象, let's go 让我们出发吧!
类和对象
刚接触 python 中的类和对象,我也和大多数小伙伴一样迷茫,不知道它和我所熟知的 java 都有什么异同点,为此我还提出了一大堆问题
- 如何创建和实例化类?
- 是否和 java 一样有访问修饰符,分为几个级别?
- 构造函数该怎么写?
- 怎么进行
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 简洁不少。
了解了定义和实例化类,还有两个问题:
- 要判断一个对象是不是某个类的实例该怎么做呢?用
isinstance
print(isinstance (person, Person)) # True- 判断对象是什么类型,该怎么做? 用
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 中 public, private 等访问修饰符的存在, python 中有没有这些概念呢?还真有,变量默认就是
