Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
1.类和对象
类是对象的抽象,对象是类的具体。
定义类的语法如下:
class ClassName:
<statement-1>
.
.
.
<statement-N>
python的面向对象的语法特征与Java等其它面向对象语言十分类似,学过Java的同学可以迅速掌握本节内容。其中与Java语言有显著区别的主要体现在以下几点:
实例:
# -*- coding: utf-8 -*-
# @Time : 2022/4/6 10:42
# @File : studentsdemo.py
# @Software : PyCharm
class Students:
# 类属性
major = None
# 构造方法
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
# 成员方法
def study(self):
print(self.name, "is good good study,day day up!")
print(self.name, " my major is:", self.major)
return
# toString()方法
def __str__(self):
return "姓名:%s , 性别:%s, 年龄:%d" % (self.name, self.gender, self.age)
p = Students('张三', '男', 20)
p.study()
p.major = '软件工程'
p.study()
运行结果:
张三 is good good study,day day up!
张三 my major is: None
张三 is good good study,day day up!
张三 my major is: 软件工程
2.构造方法重载
Python的构造函数是不能重载一个类只能有一个构造函数存在。定义多个构造方法时,实例化类只实例化最后的构造方法,即后面的构造方法会覆盖前面的构造方法,并且会根据最后一个构造方法的形式进行实例化。但是我们在很多时候,希望可以实现构造函数重载的效果,怎么去实现呢?我们可以通过关键字参数达到构造函数重载的效果。
代码如下:
class MyClass(object):
def __init__(self, **kwargs):
for key, val in kwargs.items():
setattr(self, key, val)
a = MyClass(name='xiaoming', gender='女')