Python——面向对象

类属性property
作用:
property可以定义一个方法名为私有属性的名字, 让用户可以访问, 但不能修改, 保护数据的
安全性;
属性名.setter在给属性赋值时, 先做判断;
属性名.deleter使用内置del删除属性时,自动执行的内容;

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

student1 = Student("one", 111)

print student1.name
print student1.__score

这里写图片描述

查看方法

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

student1 = Student("one", 111)

print student1.name
print student1._Student__score

这里写图片描述

property应用: 信息分页显示
主机信息有很多, 为了美观, 分页显示;
当用户选择第n页, 显示该页需要的数据从哪条开始, 哪条结束;
将start, end返回给后端, 将需要的数据响应给前端;

class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.__age = age
        self.__score = score

    @property
    def age(self):
        return self.__age

student1 = Student("one", 11, 111)
print student1.age

这里写图片描述

私有成员和共有成员
私有属性/方法: 类内部可以访问, 对象不能访问; 子类不能访问, 子类的对象不能访问;
共有属性/方法: 私有属性可以访问和不可以访问的, 都可以访问;

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

    def __judge(self):
        if 0 <= self.__score <= 100:
            print "Y"
        else:
            print "N"

student1 = Student("one", 111)

print student1.name
print student1._Student__score
student1._Student__judge()

这里写图片描述

改变类的字符串显示 strrepr
str : 当打印对象时自动调用;
repr : 当在交互式环境中, 直接输入对象时, 自动调用;
如果 str 没有定义时, 那么打印对象自动调用 repr ;
功能: 简化脚本测试和调试时的实例输出;

class Student(object):
    def __init__(self, name, sid):
        self.__name = name
        self.__sid = sid

    def __str__(self):
        return "Student(%s)"  %(self.__name)

    def __repr__(self):
        return "<%s %s>" %(self.__name, self.__sid)

if __name__ == "__main__":
    s = Student("westos", 001)
    print s
    s

这里写图片描述

In [3]: import duixiang

In [4]: s = dui
duixiang      duixiang.py   duixiang.pyc  

In [4]: s = duixiang.Student("python", "110")

In [5]: s
Out[5]: <python 110>

这里写图片描述

自定义字符串的格式
format

_riqi = {
    'nyr' : '{d.year}-{d.month}-{d.day}',
    'yrn' : '{d.month}/{d.day}/{d.year}',
    'ryn' : '{d.day}:{d.month}:{d.year}',
}

class Date(object):
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    def __format__(self, code):
        if code == '':
            code = 'nyr'
        fmt = _riqi[code]
        return fmt.format(d=self)

d = Date(2018,1,9)
print format(d)
print format(d,'ryn')
print format(d,'yrn')

这里写图片描述

索引: getitemsetitemdelitem

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

    def __getitem__(self, item):
        print "__getitem__",item

    def __setitem__(self, key, value):
        print "__setitem__", key, value

    def __delitem__(self, key):
        print "__delitem__", key

s = Student("van")
print s['name']
name =s['name']

s['name'] = 'one'

del s['name']

这里写图片描述

切片: getslice 和 __setslicedelslice

class Student(object):

    def __init__(self,name, age):
        self.name = name
        self.__age = age

    def __getslice__(self, i, j):
        print "get", i, j

    def __setslice__(self, i, j, item):
        print "set", i, j, item

    def __delslice__(self, i, j):
        print "del", i, j

s = Student("van", 122)

s[0:3]
s[0:3] = [3,9,0]
del s[0:3]

这里写图片描述
迭代 iter

class Student(object):
    def __init__(self, name):
        self.name = name
        self.scores = [5,31,22]

    def add_score(self, score):
        self.scores.append(score)

    def __iter__(self):
        return iter(self.scores)

s = Student("lalal")
s.add_score(97)

print s.scores

from collections import Iterable
print isinstance(s, Iterable)

for i in s:
    print i

这里写图片描述
元类(‘type’)
在python中,一切皆对象; Linux下一切皆文件;

class Student(object):
    print 'ccc'

s = Student()

print type(s)
print type(Student)

这里写图片描述
动态的创建类

def choose(name):
    if name == 'ch':
        class CS(object):
            pass
        return CS
    else:
        class MS(object):
            pass
        return MS

myclass = choose('ch')
print myclass

这里写图片描述
type动态创建类
type(对象)
type(类名, 元组方式存储父类,属性 )

def choose(name):
    if name == 'ch':
        class CS(object):
            pass
        return CS
    else:
        class MS(object):
            pass
        return MS

myclass = choose('ch')
print myclass

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何使用 Python 制作一个简易的学生信息管理系统。这个系统将使用面向对象编程的方式实现,可以方便地添加、删除和修改学生信息。 首先,我们需要定义一个 `Student` 类,用来表示学生信息。每个学生都有姓名、学号、年龄等基本信息,可以使用类的属性来表示: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age ``` 在 `__init__` 方法中,我们定义了三个属性,分别对应学生的姓名、学号和年龄。接下来,我们需要添加一些方法,来实现学生信息的添加、删除和修改: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age def get_name(self): return self.name def set_name(self, name): self.name = name def get_student_id(self): return self.student_id def set_student_id(self, student_id): self.student_id = student_id def get_age(self): return self.age def set_age(self, age): self.age = age ``` 在上面的代码中,我们定义了六个方法,分别对应获取和设置学生的姓名、学号和年龄。这些方法可以方便地对学生信息进行修改。 接下来,我们可以创建一个 `StudentManager` 类,用来管理所有的学生信息。这个类包含了一个学生列表,可以添加、删除和修改学生信息: ```python class StudentManager: def __init__(self): self.students = [] def add_student(self, student): self.students.append(student) def remove_student(self, student): self.students.remove(student) def get_all_students(self): return self.students def search_student_by_id(self, student_id): for student in self.students: if student.get_student_id() == student_id: return student return None ``` 在上面的代码中,我们定义了四个方法,分别对应添加、删除、获取所有学生和根据学号查找学生。这些方法可以方便地对学生信息进行管理。 现在,我们可以创建一个 `main` 函数,来实现学生信息管理系统的基本功能: ```python def main(): manager = StudentManager() # 添加学生 student1 = Student('张三', '001', 18) manager.add_student(student1) student2 = Student('李四', '002', 19) manager.add_student(student2) student3 = Student('王五', '003', 20) manager.add_student(student3) # 查找学生 s = manager.search_student_by_id('001') print(s.get_name(), s.get_student_id(), s.get_age()) # 修改学生信息 s.set_name('赵六') s.set_age(21) # 删除学生 manager.remove_student(student3) # 打印所有学生信息 students = manager.get_all_students() for student in students: print(student.get_name(), student.get_student_id(), student.get_age()) ``` 在上面的代码中,我们首先创建了一个 `StudentManager` 对象,并添加了三个学生。然后,我们使用 `search_student_by_id` 方法查找学号为 '001' 的学生,并打印出其姓名、学号和年龄。接着,我们使用 `set_name` 和 `set_age` 方法修改了该学生的姓名和年龄。然后,我们使用 `remove_student` 方法删除了一个学生。最后,我们使用 `get_all_students` 方法获取所有学生信息,并打印出来。 这样,一个简易的学生信息管理系统就完成了。您可以根据自己的需求,继续添加其他功能,如文件读写、GUI 界面等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值