Python基础学习日记<4>

Python基础

面向对象编程

面向对象编程最重要的概念就是实例。在面向对象技术主要有一下概念需要掌握:

  • 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。定义类是通过class关键字来定义的格式如下:
class 类名(object):
	内容

对于(object)表示的是从哪个类继承下来的

  • 方法:类中所定义的函数,也就是在类的内部编写的函数就叫方法,这与Java中的概念是一样的。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类的创建

以上名词都是面向对象编程中出现的,学过Java的人应该都不陌生。
我们举一个用类的例子:

# 创建类MyClass
class MyClass:
    i=123
    #下面定义类中的方法
    def f(self):
        return "hello world"

#实例化类
x=MyClass()

#访问类中的属性和方法
print("MyClass类的属性i为:",x.i)
print("MyClass类中的方法:",x.f())
------------------------
MyClass类的属性i为: 123
MyClass类中的方法: hello world

构造方法

Java中有构造方法而在Python中也一样类中有一个名为__init__()构造方法,该方法在实例化时会自动调用。举个例子:

class Student:
    def __init__(self,name,score):
        self.name=name
        self.score=score

su=Student("su",99)

print("姓名:",su.name)
print("成绩:",su.score)
---------------------
姓名: su
成绩: 99

数据封装

Java中的数据封装使用Getset方法利用get和set方法来让创建的对象获得属性值。举个例子:

class Student:
    def __init__(self,name,score):
        self.name=name
        self.score=score
    def print_score(self):
        print("%s : %s" % (self.name,self.score))

su=Student("su",99)

su.print_score()
----------------------------
su : 99

在Java中类中的属性如果不加private那就是默认public也就是外面其他的类可以访问,当变成私有变量时就能保证属性的安全了。在Python中也有类似于private用法的,而在Python中的用法就是在属性名称前加上两个下划线__,所以在Python中变量名如果以__开头,那么他就是一个私有变量,只有内部可以访问,外部不能访问。
和Java一样利用类似于getset方法进行对私有变量进行封装,如下:

class Student:
    def __init__(self,name,score):
       self.__name=name
       self.__score=score

    def set_score(self,score):
        self.__score=score
    def set_name(self,name):
        self.__name=name
    def get_score(self):
        return self.__score
    def get_name(self):
        return self.__name

    def print_ob(self):
        print("%s : %s" % (self.__name,self.__score))

su=Student("su",99)
print("姓名: ",su.get_name())
print("成绩: ",su.get_score())
su.print_ob()
-------------------------
姓名:  su
成绩:  99
su : 99

双下划线特殊变量

需要注意,在Python中如果变量名类似于双下划线开始双下划线结束的:__xxx__,那么是特殊变量,特殊变量是可以直接访问的,所以不要用__xxx__这样的变量名

继承和多态

继承

与Java语言一样在类中也有继承,而继承也就是面向对象编程的特点,也就是子类继承了父类中的一些方法,例如:

# 首先定义一个父类如人
class People():
    def study(self):
        print("在学习...")       
# 定义子类 如中国人
class Chinese(People):
    pass                              # 直接跳过
gq=Chinese()
gq.study()
-------------------------
在学习...

继承也就是子类拥有了父类中的方法
对于类来说也可以继承多个父类

class People():
    def study(self):
        print("在学习...")
class YellowRace():
    def eat(self):
        print("在吃饭..")
# 定义子类 如中国人
class Chinese(People,YellowRace):		#注意多继承的使用方法
    def study(self):
        print("中国人在学习....")
    def run(self):
        print("中国人在跑...")
gq=Chinese()
gq.study()
gq.run()
gq.eat()
---------------------
中国人在学习....
中国人在跑...
在吃饭..
多态
# 首先定义一个父类如人
class People():
    def study(self):
        print("在学习...")
# 定义子类 如中国人
class Chinese(People):
    def study(self):
        print("中国人在学习....")
    def run(self):
        print("中国人在跑...")
gq=Chinese()
gq.study()
gq.run()
-----------
中国人在学习....
中国人在跑...

从上面的例子中我们知道子类中同样定义了study()方法,运行后执行的是子类的方法也就是说子类的study方法覆盖了父类的study方法,而这也就是我们要说的多态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值