python面向对象编程快速理解!!!
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。
开始:
创建一个类:
class Student():
# Student类的属性
name = "lin"
# student类的方法
def say(self):
print("My name is ", self.name)
实例化类:
a = Student()
print(a.name) 访问类的属性
a.say() 调用类的方法
输出:
lin
My name is lin
几个特殊用法:
class Student():
name = "lin"
age = 18
def say(self):
self.age = 20
print("class sya:", self.name, self.age) # 访问self修改后中的属性
print("class sya:", self.name, __class__.age) # __class__访问类中的属性
print("class sya:", self.name, Student.age) # 访问类中的属性
实例化后输出:
class sya: lin 20
class sya: lin 18
class sya: lin 18
共有私有:
私有: __name, 不是真私有,而是一种改名策略,可以通过 _Student__age 访问
保护:_age, 子类可以用,但不能公用
class School():
name = "lin"
__age = 18
a = School()
print(a.name)
print(a._School__age)
# print(a.__age) # 直接访问私有数据,会报错!
输出:
lin
18
继承:
class Person():
name = "lin"
__age = 0
_num = 1
def sleep(self):
print("sleeping.......")
class Teacher(Person):
id = "1234"
def work(self):
Person.sleep(self) # 对父类中的方法进行扩展
super().sleep() # 同上
print("make a money......")
aaa = Teacher()
print(aaa.name, aaa._num, aaa.id)
aaa.work()
输出:
lin 1 1234
sleeping.......
sleeping.......
make a money......
魔法函数:
__init__示例:
class User():
def __init__(self, pk):
print("User ......", pk)
class Sensor(User):
name = "lin"
# 子类中有构造函数,优先执行子类
# def __init__(self):
# print("sensor ......")
s = Sensor(123)
输出:
User ...... 123
多态:
参考:https://www.cnblogs.com/luchuangao/p/6739557.html
混合Mixin:
Mixin和多继承的区别:
Mixin是功能的增加,而不改变物种
多继承不仅增加功能,也改变其物种(多物种)一般是不建议使用多继承的,会导致关系混乱!