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是功能的增加,而不改变物种

多继承不仅增加功能,也改变其物种(多物种)一般是不建议使用多继承的,会导致关系混乱!

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务