一。什么是面向对象
面向对象的编程是由面向过程发展而来的。 相比面向过程的编程语言面向对象的编程语言更具有扩展性和灵活性,其实面向对象是一种封装思想。 比如函数就是一种封装思想。
二。面向对象的常用术语
- 类:类是一个模版可以通过这个模版创建出多个实例。 例如。 可以把建造汽车的图纸看成类。
- 对象: 对象是不能直接使用的。 是通过类实例化而来的。 例如。可以通过汽车的图纸制造出真正的汽车
- 属性:类中所有的变量称之为属性。
- 方法: 类中所有的函数称之为方法。 与普通方法不同的是类方法至少回包含一个seif参数
三。定义类 class
python使用关键字class定义一个类。
class Person:
name = '王小明',
age = 23,
def getName(self):
print("我是一个类方法")
- 对于类来说属性和方法都是不必要的。 也就是完全可以创建一个空类。此外属性和方法也是无序的。
- 类型本质上是一个标志符。 所以要遵循命名规则。也就是要尽量语意化。
- 类名后面必须要加‘:’告诉解释器,下面定义的是属性和方法。
- 类中所有的属性和方法必须要使用相同的锁进格式。
- 在类方法之外定义的变量称之为类属性或者类变量。在方法中定义的变量称之为实例属性或者实例变量。
- 类方法会有一个默认的self参数。
四。__init()__类的构造方法
在创建类的时候可以手动添加一个__init__()方法。该方法是一个特殊的类实例方法称之为构造方法或者构造函数。每当创建一个类的实例时解释器会自动调用这个方法。
- 在此方法中开头和结尾都是两个下划线且中间是不能出现空格的,
- 该方法可以包含多个参数。 但必须包含一个self参数切要放在第一位。
- 仅包含一个self参数的__init__()的构造方法称为默认构造方法
- 在定义类时。若果__init__()只有一个self参数这个函数可以不写。
class Person:
name = '王小明',
age = 23,
def __init__(self):
print("这个方法在创建对象的时候会默认调用")
def getName(self):
print("我是一个类方法")
五。 实例化对象
class Person:
name = '王小明',
age = 23,
def __init__(self):
print("这个方法在创建对象的时候会默认调用")
def getName(self):
print("我是一个类方法")
person1 = Person()
这个方法在创建对象的时候会默认调用
- __init__()除了默认的self参数以外还可以额外携带其他参数
class Person:
name = '王小明',
age = 23,
def __init__(self, name, age):
print(name, age, end="")
def getName(self):
print("我是一个类方法")
person1 = Person("小王", 24)
小王 24
创建对象时会默认调用默认的构造方法。 虽然这个构造方法有3个参数。 但是只需要手动的传入除seif的两个参数即可。
六。对象的使用
定义的类只有实例化成对象之后才能使用
- 访问变量
class Person:
name = "小张",
age = 23,
tall = 173
def add(self):
print("哈哈哈")
a = Person()
print(a.name)
print(a.age)
('小张',)
(23,)
- 调用方法
class Person:
name = "小张",
age = 23,
tall = 173
def add(self):
print("哈哈哈")
a = Person()
a.add()
哈哈哈
- 对象添加属性
class Person:
name = "小张",
age = 23,
tall = 173
def add(self):
print("哈哈哈")
a = Person()
a.city = "成都市"
print(a.city)
成都市
- 对象删除属性
class Person:
name = "小张",
age = 23,
tall = 173
def add(self):
print("哈哈哈")
a = Person()
a.city = "成都市"
print(a.city)
del a.city
print(a.city)
成都市
Traceback (most recent call last):
File "/Users/apple/Documents/重要文件/python3/python21.py", line 12, in <module>
print(a.city)
AttributeError: 'Person' object has no attribute 'city'