Python-类基础
# 接口类(抽象类) from abc import ABCMeta,abstractmethod # 接口类,用于规定:继承此类的派生类,必须有什么方法 class PayMeta(metaclass=ABCMeta):# 加上装饰器@abstractmethod,代表继承PayMeta类的派生类中必须有pay方法,否者报错。 @abstractmethoddef pay(self): passclass Alipay(PayMeta):def __init__(self,money):self.money = moneydef pay1(self):print('使用支付宝,支付了<%s>.'%self.money)def pay(self):print('使用支付宝,支付了<%s>.'%self.money) def pay(obj):obj.pay() a1 = Alipay(500) pay(a1)
接口类
# 类的私有字段、方法 # 在字段名前加上__该字段就成为了私有字段,只能在类的内部访问。就算是派生类(子类)也无法访问 ''' 私有字段的实现原理,在Python解释器读到__开头的字段时,会给该字段改名,改为 ‘_类名__字段名’,所以使用_类名__字段名 这个可以在任何地方访问私有字段,但是不推荐这样访问私有方法也是同理注:在Python解释器从上到下读取类代码的时候,只要遇到私有字段都会将名字改为‘_类名__字段名’,不管是调用还是定义'''class A:__name = '类的私有字段'def __f1(self):print('__f1')def f2(self):self.__f1() class B(A):def fun(self):print(self._A__name)b1 = B() b1.fun() a1 = A() a1.f2()# 类的私有方法 class Parent():def __func(self):print('in Parent func Parent的私有方法')def __init__(self):self.__func()class Son(Parent):def __fun(self):print('in Son func Son的私有方法')son1 = Son()# 类的私有对象属性 class A:__fun = 0def __init__(self,age):self.__arg = '类的私有静态对象属性'self.__age = agedef func(self):print(self.__arg)print(self.__age) # def __fun(self): # print(666) a1 = A(12) print(A.__dict__) a1.func()
类的私有方法、字段
# 创建一个类,计算BMI指数 ''' @property装饰器 property 可以让一个方法,伪装成属性使用。下面是示例''' class Bmi:def __init__(self,weight,hight,name):self.weight = weightself.hight = hightself.name = name@propertydef bmi(self):b = self.weight / self.hight ** 2if b < 18.5:return '《Name:%s BMI:%s》过轻:低于:18.5'%(self.name,format(b,'0.2f'))elif b <= 23.9:return '《Name:%s BMI:%s》正常:18.5~23.9之间'%(self.name,format(b,'0.2f'))elif b <= 27:return '《Name:%s BMI:%s》过重:24~27之间'%(self.name,format(b,'0.2f'))elif b <= 32:return '《Name:%s BMI:%s》肥胖:28~32之间'%(self.name,format(b,'0.2f'))else:return '《Name:%s BMI:%s》非常肥胖:高于32'%(self.name,format(b,'0.2f'))bmi = Bmi(73,1.77,'kkk') print(bmi.bmi)
@property属性
# property 属性的修改 ''' @property装饰器 property 可以让一个方法 伪装成属性使用。伪装属性的修改 @需要修改的属性.setter 下面是示例注: 要使用 setter 装饰器 必须要存在@property ''' class A:def __init__(self,name,age):self.__name = nameself.__age = age# 查看属性 @property def age(self):return self.__age# 修改属性 @age.setter def age(self,a1): self.__age = a1 if isinstance(a1,int) else self.__age# 删除属性 @age.deleterdef age(self):del self.__agea1 = A('kkk',28) print(a1.age) a1.age = a1.age + 1 print(a1.age) del a1.age
property 属性的修改(setter、deleter)
# 类方法class A:def func(self):print(self)@classmethod def func1(cls):# cls 就是 A 这个类print('传入的cls',cls)return cls()a1 = A.func1() a1.func() # 对象调用类方法,自动传入的cls也是类本身。 a2 = A() a2.func1() ''' 类方法的使用场景1.类中 有些方法不需要对象参与 2.对类中的静态变量进行改变,要用类方法 3.在父类中获取,子类类空间''' # 在父类中获取,子类类空间 class A:@classmethoddef func(cls):print(cls) class B(A):pass B.func()
类方法 classmethod
# 静态方法 ''' 静态方法:没有self,cls 不用默认传入 对象和类 ''' class A:@staticmethoddef func():print(666) A.func()
类的静态方法
转载于:https://www.cnblogs.com/wtil/p/10960727.html
Python-类基础相关推荐
- python类基础知识注意点
一.类的简述 类是面向对象编程的核心内容.通常把具有相同特征(数据元素)与行为(功能)的事物描述定义为一个类,类是一个抽象的概念,把类实例化既可以得到一个对象. 因此,对象的抽象是类,类的具体化就是对 ...
- 【Python基础入门系列】第10天:Python 类与对象
首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...
- python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承
注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...
- Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合
Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...
- python定义一个复数类complex、内有两个成员变量_python(一):python语言基础
一.python语言基本的8个要素 Python语言的8个要素:数据类型.对象引用.组合数据类型.逻辑操作符.运算操作符.控制流语句.输入/输出.函数的创建与引用.除此之外还有一个非常重要且无处不在的 ...
- 6-1 设计一个股票类(高教社,《Python编程基础及应用》习题9-6)
6-1 设计一个股票类(高教社,<Python编程基础及应用>习题9-6) (10 分) 设计一个名为Stock的类来表示一个公司的股票,包括以下内容: 1)股票代码.股票名称.前一天股票 ...
- 6-3 定义并实现Book类及其__del__函数(高教社,《Python编程基础及应用》习题9-4)
图书馆里有很多的书, 请定义一个名为Book的类.该类的属性包括书名(字符串),书号(字符串),单价(浮点数):该类的构造函数接受书名,书号及单价三个参数并参成对象初始化:该类的__del__()函数 ...
- 【Python基础】07、Python类与面向对象
一.面向对象编程(OOP) 程序=算法+数据结构=指令+数据 1.代码可以选择以指令为核心或以数据为核心进行编写 两种范型: 以指令为核心:围绕"正在发生什么"进行编写 面向过程编 ...
- python类和oop基础知识
文章目录 oop:面向对象程序设计 python类的特点: oop基本概念: 1.属性继承搜索: 2.类和实例: 3.类方法调用 4.编写类树 5.代码重用 oop:面向对象程序设计 1.类:一些函数 ...
- 抽象数据类型和Python类的基础
1.1 抽象数据类型是什么? 在程序的开发实践中,人们发现,仅有程序语法方面的抽象还远远不够,还需要考虑数据层面的抽象. 从使用者的角度:抽象数据类型就是程序实现的一个功能部件,这个部件在头部定义了它 ...
最新文章
- python3.7安装pygal_pip和pygal的安装实例教程
- 开源分享 Unity3d客户端与C#分布式服务端游戏框架
- 【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用
- node.js 异步_Node.js v14中的异步本地存储是什么?
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
- 【转】LPCTSTR,LPWSTR, PTSTR, LPTSTR区别
- 万年历插件软件测试,一个计算万年历的简单程序
- 985大学计算机专业保研率排名,2016中国大学保研率排行榜出炉
- DELMIA软件物流仿真:机器人输送带上下料虚拟仿真操作方法
- spss20安装许可证代码_Spss 23软件下载与安装
- mysql 中的split函数_mysql中split函数
- 美通企业日报 | 北京上海上榜全球最佳留学城市40强;华大电子安全芯片突破150亿颗...
- Nature Reviews Microbiology | 土壤微生物组与同一健康
- 2020-我的跑步之路
- latex 跳转标签_在 LaTeX 中使用交叉引用
- sigsuspend 函数 释疑
- python实数绝对值的计算循环操作_Python复数属性和方法运算操作示例
- ps景观平面图转鸟瞰图_ps如何制作鸟瞰图 ps制作鸟瞰图教程
- springboot Possibly consider using a shorter maxLifetime value.
- Blos查看计算机硬盘,如何在bios查看硬盘
热门文章
- 计算机技术大神,2017考研:计算机科学与技术学科大神给你的套路
- aspose 换行写_aspose.word 换行符 aspose.words换行符
- python seek tell_PYTHON学习14.09:Python seek()和tell()函数详解
- EA与Rose UML建模工具比较
- 做为产品经理如何判断一个创业项目是否靠谱?
- Nginx之共享内存与slab机制
- pymysql的使用(笔记)
- tensorflow系列之1:加载数据
- 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件
- 从工作实践中积累Linux常用脚本(一)