# 接口类(抽象类)
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-类基础相关推荐

  1. python类基础知识注意点

    一.类的简述 类是面向对象编程的核心内容.通常把具有相同特征(数据元素)与行为(功能)的事物描述定义为一个类,类是一个抽象的概念,把类实例化既可以得到一个对象. 因此,对象的抽象是类,类的具体化就是对 ...

  2. 【Python基础入门系列】第10天:Python 类与对象

    首先,我已经假定你是个萌新或已经看了无数遍的垃圾文章,然后依然搞不懂类和对象,但是呢起码知道有类和对象这么两个玩意儿,我觉得有必要找一篇生动形象的示例来讲解. 由于你可能没有编程经验, 所以无法从学过 ...

  3. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...

  4. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  5. python定义一个复数类complex、内有两个成员变量_python(一):python语言基础

    一.python语言基本的8个要素 Python语言的8个要素:数据类型.对象引用.组合数据类型.逻辑操作符.运算操作符.控制流语句.输入/输出.函数的创建与引用.除此之外还有一个非常重要且无处不在的 ...

  6. 6-1 设计一个股票类(高教社,《Python编程基础及应用》习题9-6)

    6-1 设计一个股票类(高教社,<Python编程基础及应用>习题9-6) (10 分) 设计一个名为Stock的类来表示一个公司的股票,包括以下内容: 1)股票代码.股票名称.前一天股票 ...

  7. 6-3 定义并实现Book类及其__del__函数(高教社,《Python编程基础及应用》习题9-4)

    图书馆里有很多的书, 请定义一个名为Book的类.该类的属性包括书名(字符串),书号(字符串),单价(浮点数):该类的构造函数接受书名,书号及单价三个参数并参成对象初始化:该类的__del__()函数 ...

  8. 【Python基础】07、Python类与面向对象

    一.面向对象编程(OOP) 程序=算法+数据结构=指令+数据 1.代码可以选择以指令为核心或以数据为核心进行编写 两种范型: 以指令为核心:围绕"正在发生什么"进行编写 面向过程编 ...

  9. python类和oop基础知识

    文章目录 oop:面向对象程序设计 python类的特点: oop基本概念: 1.属性继承搜索: 2.类和实例: 3.类方法调用 4.编写类树 5.代码重用 oop:面向对象程序设计 1.类:一些函数 ...

  10. 抽象数据类型和Python类的基础

    1.1 抽象数据类型是什么? 在程序的开发实践中,人们发现,仅有程序语法方面的抽象还远远不够,还需要考虑数据层面的抽象. 从使用者的角度:抽象数据类型就是程序实现的一个功能部件,这个部件在头部定义了它 ...

最新文章

  1. python3.7安装pygal_pip和pygal的安装实例教程
  2. 开源分享 Unity3d客户端与C#分布式服务端游戏框架
  3. 【汇编语言】镜像迁移能力之一通百通——由代码段和CS:IP的原理,掌握一类寄存器的使用
  4. node.js 异步_Node.js v14中的异步本地存储是什么?
  5. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
  6. 【转】LPCTSTR,LPWSTR, PTSTR, LPTSTR区别
  7. 万年历插件软件测试,一个计算万年历的简单程序
  8. 985大学计算机专业保研率排名,2016中国大学保研率排行榜出炉
  9. DELMIA软件物流仿真:机器人输送带上下料虚拟仿真操作方法
  10. spss20安装许可证代码_Spss 23软件下载与安装
  11. mysql 中的split函数_mysql中split函数
  12. 美通企业日报 | 北京上海上榜全球最佳留学城市40强;华大电子安全芯片突破150亿颗...
  13. Nature Reviews Microbiology | 土壤微生物组与同一健康
  14. 2020-我的跑步之路
  15. latex 跳转标签_在 LaTeX 中使用交叉引用
  16. sigsuspend 函数 释疑
  17. python实数绝对值的计算循环操作_Python复数属性和方法运算操作示例
  18. ps景观平面图转鸟瞰图_ps如何制作鸟瞰图 ps制作鸟瞰图教程
  19. springboot Possibly consider using a shorter maxLifetime value.
  20. Blos查看计算机硬盘,如何在bios查看硬盘

热门文章

  1. 计算机技术大神,2017考研:计算机科学与技术学科大神给你的套路
  2. aspose 换行写_aspose.word 换行符 aspose.words换行符
  3. python seek tell_PYTHON学习14.09:Python seek()和tell()函数详解
  4. EA与Rose UML建模工具比较
  5. 做为产品经理如何判断一个创业项目是否靠谱?
  6. Nginx之共享内存与slab机制
  7. pymysql的使用(笔记)
  8. tensorflow系列之1:加载数据
  9. 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件
  10. 从工作实践中积累Linux常用脚本(一)