Python基础–详细记录Sixth_Chapter

1、类和对象





类方法和静态方法中无法引用实例方法和实例属性,无法调用self,类对象中无self属性

1.1 实例属性

1.2 实例方法


class Student:count = 0def __init__(self,name,score):self.name = nameself.score = scoreStudent.count+=1def say_score(self):print("{0}的分数是{1}".format(self.name,self.score))
s1 = Student("zl",18)
s1.say_score()
s1.salary = 3000
print(s1.salary)
Student.say_score(s1)
print(dir(s1))
print(s1.__dict__)
print(isinstance(s1,Student))#是不是Student的实例对象
class man:pass
print(isinstance(s1,man))
s2 = Student("zs",18)
print(Student.count)

1.3 类方法


class Student:company="FS"@classmethoddef printCompany(cls):print(cls.company)
Student.printCompany()

1.4 静态方法

class Student2:company = "YW"@staticmethoddef add(a,b):print("{0}+{1}={2}".format(a,b,(a+b)))return a+b
Student2.add(10,20)

1.5 析构方法

1.6 call方法

class Salary1:def __call__(self, salary):year_salary = salary*12day_salary = salary//22.5hour_salary = day_salary/8return dict(year_salary=year_salary,month_salary=salary,day_salary=day_salary,hour_salary=hour_salary)s1 = Salary1()
print(s1(3000))

1.7 私有属性和私有方法

class Employee:__company = 'ES'def __init__(self,name,age):self.name = nameself.__age = agedef __work(self):print("EM")print("年龄{}".format(self.__age))print("公司{}".format(Employee.__company))
e = Employee("zl","18")
# print(e.name)
print(e._Employee__age)
print(dir(e))
e._Employee__work()
print(Employee._Employee__company)

1.8 @property

class Employee:def __init__(self,name,salary):self.__name = nameself.__salary = salarydef get_salary(self):return self.__salarydef set_salary(self,salary):if 1000<salary<50000:self.__salary = salaryelse:print("...")
emp1 = Employee("ZL",30000)
print(emp1.get_salary())
emp1.set_salary(35000)
print(emp1.get_salary())
class Employee:def __init__(self,name,salary):self.__name = nameself.__salary = salary@propertydef salary(self):return self.__salary@salary.setterdef salary(self,salary):if 1000<salary<50000:self.__salary = salaryelse:print("...")emp1 = Employee("ZL",30000)
print(emp1.salary)
emp1.salary = 3000
print(emp1.salary)

2、面向对象三大特征

2.1 继承


class Person:def __init__(self,name,age):self.name = nameself.__age = agedef say_age(self):print("18")class Student(Person):def __init__(self, name,age,score):Person.__init__(self,name,age)   #必须显示调用父类初始化方法,否则解释器不会调用self.score = scoreprint(Student.mro())
s = Student("ZL",18,60)
print(s.name)
print(dir(s))
print(s._Person__age)

2.2 方法的重写

class Person:def __init__(self,name,age):self.name = nameself.__age = agedef say_age(self):print("18")class Student(Person):def __init__(self, name,age,score):Person.__init__(self,name,age)self.score = scoredef say_age(self):print("19")s = Student("ZL",18,60)
s.say_age()

2.3 多态

class Man:def eat(self):print("吃饭啦")
class Chinese(Man):def eat(self):print("用筷子")
class English(Man):def eat(self):print("用叉子")
def Eat(m):if isinstance(m,Man):m.eat()else:print("ooo")Eat(Chinese())
Eat(English())

2.4 深拷贝和浅拷贝

import copyclass MobilePhone:def __init__(self,cpu,screen):self.cpu = cpuself.screen = screenclass CPU:def calculate(self):print("算你个12345")print("cpu对象:",self)class Screen:def show(self):print("显示一个好看的画面,亮瞎你的钛合金大眼")print("screen对象:",self)#测试变量赋值
c1 = CPU()
c2 = c1
print(c1)
print(c2)
print("测试浅复制....")
#测试浅复制
s1 = Screen()
m1 = MobilePhone(c1,s1)
m2 = copy.copy(m1)
print(m1,m1.cpu,m1.screen)
print(m2,m2.cpu,m2.screen)#测试深复制
print("测试深复制....")
m3 = copy.deepcopy(m1)
print(m1,m1.cpu,m1.screen)
print(m3,m3.cpu,m3.screen)

2.5 继承和组合


#使用继承实现代码的复用
class A1:def say_a1(self):print("a1,a1,a1")class B1(A1):passb1 = B1()
b1.say_a1()#同样的效果,使用组合实现代码的复用
class A2:def say_a2(self):print("a2,a2,a2")class B2:def __init__(self,a):self.a = aa2 = A2()
b2 = B2(a2)
b2.a.say_a2()

2.6 设计模式

class CarFactory:def create_car(self,brand):if brand =="奔驰":return Benz()elif brand =="宝马":return BMW()elif brand == "比亚迪":return BYD()else:return "未知品牌,无法创建"class Benz:passclass BMW:passclass BYD:passfactory = CarFactory()
c1 = factory.create_car("奔驰")
c2 = factory.create_car("比亚迪")
print(c1)
print(c2)

class MySingleton:__obj = None           #类属性__init_flag = Truedef __new__(cls, *args, **kwargs):if cls.__obj ==None:cls.__obj = object.__new__(cls)return cls.__objdef __init__(self,name):if MySingleton.__init_flag:print("init.....")self.name = nameMySingleton.__init_flag = Falsea = MySingleton("aa")
b = MySingleton("bb")
print(a)
print(b)
c = MySingleton("cc")
print(c)

Python基础–详细记录Sixth_Chapter相关推荐

  1. Python基础–详细记录Fourth_Chapter

    Python基础–详细记录Fourth_Chapter 1.条件语句 1.1 条件表达式 例子: 1.2 多分支结构 1.3 选择嵌套结构 2.循环语句 2.1 while循环 2.2 for循环 2 ...

  2. 【Python基础语法记录】

    Python基础语法记录 隔好长时间不用Python就什么都不记得了,记在这里方便下次找 文章目录 Python基础语法记录 一.循环语句 二.list相关 1.创建 2.增加 3.删除 4.两个li ...

  3. python基础学习记录

    #学习的课程是跟随着 网易云课堂中 同时推荐一下 这个课程不错哦 http://study.163.com/course/courseMain.htm?courseId=1004106037 老师学习 ...

  4. 万字长文爆肝Python基础入门【巨详细,一学就会】

    目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...

  5. 详细记录python的range()函数用法

    详细记录python的range()函数用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的sl ...

  6. 最后一篇,小白看的Python基础教程,详细得很(十一)

    @Author:Runsen 往期回顾: 第一篇.小白看的 Python 基础教程,详细得很(八) 第二篇.小白看的 Python 基础教程,详细得很(九) 第三篇.小白看的 Python 基础教程, ...

  7. python基础代码大全-Python字典及基本操作(超级详细)

    字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关 ...

  8. Python超详细基础入门教程

    Python超详细基础教程(一) 一.变量和简单数据类型 (一)修改字符串大小写 (二)制表符和换行符 (三)删除空白 (四)数 二.列表 (一)列表定义 (二)修改.添加和删除元素 (三)组织列表 ...

  9. 白月黑羽教程小收获记录-python基础

    放上良心UP主的网址(点击跳转) 白月黑羽免费自学网站 python基础 python基础-B站 自己的记录 我们知道字符串可以用单引号,双引号,这两个基本上就是如果要输出的表达式有单引号,整体的字符 ...

最新文章

  1. html显示隐藏密码,Web前端,登录密码显示隐藏眼睛
  2. 2020年李永乐线性代数强化笔记-行列式与矩阵
  3. 训练数据集时为何要先加载预训练模型作为初始化,这样做有何好处?
  4. 正则替换让一部分内容保持不变
  5. 前端学习(3100):vue+element今日头条管理-react简介
  6. 文本分类问题不需要ResNet?小夕解析DPCNN设计原理(上)
  7. 蓝星二开某微商城源码+搭建教程
  8. 戴姆勒:停止内燃机研发 马斯克:欢迎进群!
  9. excel php 数字科学计数_excel单元格设置技巧:这些自定义格式,你用过哪些?
  10. OpenGL基础50:HDR
  11. ConcurrentHashMap1.7到1.8变化
  12. 解码.NET 2.0配置之谜(一)
  13. 昆仑通泰界面UI,复制可用,昆仑通泰触摸屏设计界面。MCGS 组态软件各版本均复制可用
  14. 【爬虫实战】9应用Python网络爬虫——利用Post定向爬取下载慕课MOOC视频
  15. DeepLog:基于系统日志使用深度学习方法做异常检测和诊断
  16. matlab中与或非、等逻辑符号
  17. kong_团结的面Kong:国际妇女节
  18. 谈谈Mysql 字符串连接 CONCAT CONCAT_WS GROUP_CONCAT区别及使用场景
  19. 【第三方互联】12、支付宝(Alipay)授权第三方登录
  20. 前端批量下载七牛云文件

热门文章

  1. m4b格式 android,新星安卓手机格式转换器
  2. 音视频从入门到精通——FFmpeg分离出PCM数据实战
  3. oracle缩表空间大小,Oracle查询锁 表空间名称和大小 被锁的表
  4. 用模板建站 菜鸟变高手
  5. 【Metal2剖析(七):抗锯齿之基于Imageblock特性的增强MSAA】
  6. pytorch earlystopping使用
  7. 同样line-height下ios和Android显示不一致的问题
  8. python来判断三角形的性质
  9. JavaScript设计模式与开发实践(网课学习)
  10. apache-jmeter-5.5使用教程