python学习记录—类和实例

xiaoxiao2021-02-28  21

类和实例

    类是创建实例的模板,而实例是一个一个具体的对象,每个对象有相同的方法,但各自的数据可能不同。有点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中定义即可

该属性可以被访问及更改

转载请注明原文地址: https://www.6miu.com/read-2596296.html

最新回复(0)