python学习记录1—每日python

时间:2021-07-17 22:23:33

类和实例

    类是创建实例的模板,而实例是一个一个具体的对象,每个对象有相同的方法,但各自的数据可能不同。有点c语言中结构体的意思。

    定义一个实例

class Student(object):

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

    创建后可以传递参数

>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59

数据封装的使用

class Student(object):

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

    def print_score(self):
        print('%s: %s' % (self.name, self.score))
    def get_grade(self):
        if self.score >= 90:
            return 'A'
        elif self.score >= 60:
            return 'B'
        else:
            return 'C'

实际操作:

lisa = Student('Lisa', 99)  两个不同的实例
bart = Student('Bart', 59)
print(lisa.name, lisa.get_grade())
print(bart.name, bart.get_grade())

访问限制

一般的类可以被外部代码更改

>>> bart = Student('Bart Simpson', 59)
>>> bart.score
59
>>> bart.score = 99
>>> bart.score
99

为了防止更改,在属性的名称前加两个下划线,也限制了外部代码访问

class Student(object):

    def __init__(self, name, score):
        self._ _name = name
        self._ _score = score

    def print_score(self):
        print('%s: %s' % (self._ _name, self._ _score))

为了使得可以访问,添加get_属性 函数定义操作,以及更改操作

class Student(object):
    ...

    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score
    def set_score(self, score):
        self.__score = score

继承和多态

1.继承

父类  

class Animal(object):
    def run(self):
        print('Animal is running...')
子类继承,自动拥有了父类的功能,且可以自己添加功能

class Dog(Animal):
def run(self):
        print('Dog is running...')
注意:当类与父类存在相同的功能时,父类继承过来的功能会被子类的所覆盖

2.多态

子类可以继承父类的类型,呈现多种类

函数也可以接收类

def run_twice(animal):
    animal.run()
    animal.run()
子类被函数调用时,如果函数run了父类的功能,子类会继承或者覆盖该功能

获取对象信息

type()函数:其返回值是class类型,可以是被对象的类型,指向函数或者类

isinstance()函数:判断一个对象是否是某种类型,或者某些类型中的一种

dir() :获得一个对象的所有属性和方法

>>> dir('ABC')
['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']

len(): 获取一个对象的长度

lower(): 返回小写的字符串

实例属性和类属性

由前面可以知道实例属性可以有self.属性进行绑定,类该怎么绑定呢?

class Student(object):
    name = 'Student' #直接在class中定义即可

该属性可以被访问及更改