[python]面向对象编程基础

1、前言

面向对象编程(OOP),具有三大特性封装,继承,多态。

2、相关概念解释

(1)类

具有相同属性和方法的对象的抽象为类,属性用于描述对象的状态,方法用于对象的具体动作

(2)对象

类的具体化就是一个对象,对象可以表示为具体的事物或者可以为抽象的事件。

(3)消息

对象之间通信的结果成为消息

(4)方法

类中操作的实现成为方法

3、类的创建和对象的实例

(1)新建Student类

class Student():

    def __init__(self,name1,age1):             #构造方法
        self.name = name1
        self.age = age1

    def show(self):                            #显示学生信息
        print("学生姓名:"+self.name+" 年龄:"+str(self.age))

1、 __init__()为构造方法,当实例化最先调用该方法,用于初始化对象的属性

2、show()为自定义的方法,用于显示学生的信息

(2)实例化对象

tom = Student('tom',18)

对象 = 类名(属性值)

(3)访问属性

tom.show()         #通过调用方法显示属性

print(tom.name)    #直接访问属性
print(tom.age)

print(hasattr(tom,'name'))          #用于判断对象中是否存在name属性
print(getattr(tom,'name'))          #用于获取对象中该属性的值

(4)类中的内置方法

1、 __str__(self) :该方法常用于在类中实现,返回一个字符串,显示格式化结果

class Student():

    def __init__(self,name1,age1):
        self.name = name1
        self.age = age1

    def __str__(self):
        return "学生姓名:%s 年龄:%d " %(self.name,self.age)


tom = Student('tom',18)
print(tom.__str__())

2、类的各项属性

class Student(object):
    '学生类'

    def __init__(self,name1,age1):
        self.name = name1
        self.age = age1

    def show(self):
        print("学生姓名:"+self.name+" 年龄:"+str(self.age))
    def __str__(self):
        return "学生姓名:%s 年龄:%d " %(self.name,self.age)



print("该类文档:"+Student.__doc__)
print("该类名称"+Student.__name__)
print(Student.__bases__)

__doc__ :获得该类的文档

__name__ :获得该类的类名

__bases__:获得组成该类的父类,返回的结果为一个元组

(5)类的继承

class 派生类(父类,父类...):

可以满足单继承和多继承

class Father():
    def __init__(self):
        self.name = 'father'
    def FatherSay(self):
        print("i am " + self.name)

class Child(Father):
    def __init__(self):
        self.name = 'Child'
    def ChildSay(self):
        print("i am " + self.name)

 实例化对象方法的调用

fa = Father()
ch = Child()

fa.FatherSay()              #父亲调用父类方法
ch.FatherSay()              #子类调用父类方法
ch.ChildSay()               #子类调用子类方法

方法重写

重写的方法名需相同

class Father():
    def __init__(self):
        self.name = 'father'
    def FatherSay(self):
        print("i am " + self.name)

class Child(Father):
    def __init__(self):
        self.name = 'Child'
    def FatherSay(self):                     #对父类的方法进行重写
        print("i am your" + self.name)

实例化对象

fa = Father()
ch = Child()

fa.FatherSay()
ch.FatherSay()

方法重写仅改变子类的方法,对父类的方法并未影响。

4、类的属性和方法

属性:公有属性,私有属性

方法:公有方法,私有方法,静态方法,类方法

(1)属性

公有属性:self.name

私有属性:self.__age                (在属性前添加两个下划线)

(2)方法

公有方法:

def Show(self):

......

私有方法:(仅能在类中调用)

def __Count(self):                    

静态方法:(在定义方法前填写@staticmethod)

@staticmethod

def fun(self):

....

类方法:(在定义方法前填写@classmethod)

@classmethod

def fun(self):

....

测试:

class Student(object):
    con = 0
    def __init__(self,name1,age1):
        self.name = name1
        self.__age = age1
        Student.con += 1

    def show(self):
        print("学生姓名:"+self.name+" 年龄:"+str(self.__age))

    @classmethod
    def GetInfo(self):
        print("学生总人数 %d"%(self.con))
        
    
tom = Student('tom',19)
harry = Student('harry',15)
tom.show()
harry.show()
Student.GetInfo()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值