数据库技术:第三模块:面向对象&网络编程基础-第1章 面向对象-练习题(编程题)

1.请用面向对象的形式优化以下代码class Sql: host= ‘127.0.0.1’ port=3306 db=’db1′ charset=’utf8′ sql=’select * from tb1;’ proc_name=’存储过程的名字’ def __init__(self,*args): self.args=args def connect(self): pass def exc(self)

1.请用面向对象的形式优化以下代码

class Sql:     host= '127.0.0.1'     port=3306     db='db1'     charset='utf8'     sql='select * from tb1;'     proc_name='存储过程的名字'     def __init__(self,*args):         self.args=args     def connect(self):         pass     def exc(self):         if self.args == self.sql:             conn = self.connect(self.host,self.port,self.db,self.charset)             res=conn.execute(self.sql)             return res         elif self.args == self.proc_name:             conn = self.connect(self.host, self.port, self.db, self.charset, self.proc_name)             res = conn.call_proc(self.sql)             return res ex=Sql('select * from tb1;') print(ex.__dict__) 

2.请简单解释Python中 staticmethod(静态方法)和 classmethod(类方法), 并分别补充代码执行下列方法。
非绑定方法:不与类或对象绑定staticmethod
绑定到类的方法:在类内定义的被装饰器@classmethod修饰的方法

class A(object):     def foo(self, x):        print("executing foo(%s, %s)" % (self,x))     @classmethod    def class_foo(cls, x):        print("executing class_foo(%s, %s)" % (cls,x))     @staticmethod    def static_foo(x):        print("executing static_foo(%s)" % (x))  a = A() a.foo("egon") A.class_foo(1) a.static_foo(1) 

3.编写程序, 如下有三点要求:
1.自定义用户信息数据结构, 写入文件, 然后读取出内容, 利用json模块进行数据的序列化和反序列化
e.g
{
“egon”:{“password”:“123”,‘status’:False,‘timeout’:0},
“alex”:{“password”:“456”,‘status’:False,‘timeout’:0},
}
2.定义用户类,定义方法db,例如 执行obj.db可以拿到用户数据结构
3.在该类中实现登录、退出方法, 登录成功将状态(status)修改为True,
退出将状态修改为False(退出要判断是否处于登录状态).
密码输入错误三次将设置锁定时间(下次登录如果和当前时间比较大于10秒即不允许登录)
‘’’

import json import time class User:     def __init__(self, name, password):         self.name = name         self.password = password         self.status = False         self.timeout = 0      @property     def db(self):         with open(self.name+'.txt', 'r', encoding='utf-8') as f:             data = json.load(f)         return data      def save(self):         obj={}         obj[self.name]={'password':self.password,'status':self.status,'timeout':self.timeout}         with open(self.name+'.txt', 'w', encoding='utf-8') as f:             json.dump(obj,f)      def login(self):         with open(self.name+'.txt', 'r+', encoding='utf-8') as f:             data = json.load(f)             count = 0             while count < 3:                 password = input('password>>:').strip()                 if password != data[self.name]['password']:                     count += 1                     continue                 else:                     if data[self.name]['timeout'] != 0:                         if time.time() - data[self.name]['timeout'] > 10:                             print('不允许登录了!超时')                             break                         else:                             data[self.name]['status'] = True                             f.seek(0)                             f.truncate()                             json.dump(data, f)                             print('----welcome----')                             break                     else:                         data[self.name]['status'] = True                         f.seek(0)                         f.truncate()                         json.dump(data, f)                         print('----welcome----')                         break              else:                 data[self.name]['timeout']=time.time()                 f.seek(0)                 f.truncate()                 json.dump(data,f)       def quit(self):         with open(self.name+'.txt', 'r+', encoding='utf-8') as f:             data = json.load(f)             if data[self.name]['status'] == True:                 data[self.name]['status'] = False                 f.seek(0)                 f.truncate()                 json.dump(data, f)             else:                 print('您是退出状态!')   alex=User('alex','123') egon=User('egon','456') alex.save() egon.save() print(alex.db) print(egon.db) 

4.编写程序, A 继承了 B, 俩个类都实现了 handle 方法,
在 A 中的 handle 方法中调用 B 的 handle 方法

class B:     def handle(self):         print("i am b")  class A(B):     def handle(self):         super().handle()         print("i am a")  a = A() a.handle() 

5.编写程序, 编写一个学生类, 要求有一个计数器的属性, 统计总共实例化了多少个学生

class Student:     count = 0     def __init__(self,name,age,sex):         self.name = name         self.age = age         self.sex = sex          Student.count += 1     def count_num(self):         print("实例化了%s个学生" %Student.count) s1 = Student("a",18,"male") s2 = Student("b",16,"female") s3 = Student("c",15,"male") s1.count_num() 

6.使用实例进行 获取、设置、删除 数据, 分别会触发类的什么私有方法

class A(object):     def __getitem__(self, item):         return self.__dict__.get(item)     def __setitem__(self, key, value):         self.__dict__[key] = value     def __delitem__(self, key):         del self.__dict__[key]  a = A() #设置属性 a["key"] = "val" print(a.__dict__) b = a["key"] print(b) #删除属性 del a["key"] print(a.__dict__) 

7.人狗大站,2个角色,人和狗,
游戏开始后,生成2个人,3条狗,互相混战,人被狗咬了会掉血,狗被人打了也掉血,
狗和人的攻击力,具备的功能都不一样
class Animal:
def init(self,name,blood,attack):
self.name = name
self.blood = blood
self.attack = attack
def attribute(self,enemy):
self.blood -= enemy.attack
class Dog(Animal):
def attribute(self,enemy):
super().attribute(enemy)
print("%s attack %s" %(self.name,enemy.name))
class People(Animal):
def attribute(self,enemy):
super().attribute(enemy)
print("%s attack %s" %(self.name,enemy.name))

d1 = Dog(“二哈”,100,10)
p1 = People(“大壮”,100,20)
d1.attribute(p1)
print(d1.blood)
8.请编写一段符合多态特性的代码

import abc class Animals(metaclass=abc.ABCMeta):     @abc.abstractmethod     def talk(self):         pass class People(Animals):     def talk(self):         print("say hello") class Dog(Animals):     def talk(self):         print("say wangwang") class Cat(Animals):     def talk(self):         print("say miaomiao") people = People() dog = Dog() cat = Cat()  def func(animals):     animals.talk() func(people) func(dog) func(cat) 

9.请执行以下代码,解释错误原因,并修正错误

class Dog(object):     def __init__(self,name):        self.name = name     @property    def eat(self):        print(" %s is eating" %self.name)  d = Dog("ChenRonghua") d.eat 

数据库技术:第三模块:面向对象&网络编程基础-第1章 面向对象-练习题(编程题)地址:https://blog.csdn.net/qq_36993243/article/details/110423181

需要了解更多数据库技术:第三模块:面向对象&网络编程基础-第1章 面向对象-练习题(编程题),都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/dtteaching/631412.html

(0)
上一篇 2021年5月31日
下一篇 2021年5月31日

精彩推荐