python之成员(面向对象)
1. 成员
在类中你能写的所有内容都是类的成员
class Person:
def __init__(self, name, gender):
self.name = name # 成员
self.gender = gender # 成员
def run(self): # 成员
print('会跑')
2. 变量
1. 实例变量: 昨天写的就是实力变量, 由对象去访问的变量.
2. 类变量. 此时. 这个变量属于类. 但是对象也可以访问.
class Person:
contry = '中国'
def __init__(self, name, gender):
self.name = name
self.gender = gender
p = Person('Tom', '男')
p1 = Person("Jerry", '男')
print(p.name)
# p1.contry = '美国'
# print(p1.contry) # 美国
# print(p.contry) # 中国
Person.contry = '大中国'
print(p1.contry) # 大中国
print(p.contry) # 大中国
3. 方法
1. 实例方法: 昨天写的就是实例方法. 使用 对象.方法()
特点: 在声明的时候. 需要给出self, self必须放在第一个位置
在调用的时候. 自动的会把对象传递给形参的self
2. 类方法(@classmethod): 类方法是属于类的.
特点:在声明的时候需要给出一个能够接受类名的参数, cls , 也必须放在参数的第一个
在调用的时候. 自动得把xx对象的类传递给cls
class Person:
# 实例方法
def chi(self):
print('人会吃')
@classmethod
def he(cls):
print('人会喝')
# # 用对象访问
# p = Person()
# p.he() # 在调用类方法的时候, 默认的把类名传递给类方法
# print(Person) # 类方法一般用类名去访问
Person.he() # 类方法 #人会喝
3. 静态方法(@staticmethod): 静态方法也是属于类的. 静态方法就好比. 我们在类中定义了一个函数
静态方法一般和类方法差不多. 使用类名去访问
class Person:
@staticmethod # 静态方法
def he():
print('人会喝') # # 静态方法可以使用对象访问, 也可以使用类名访问. 推荐使用类名访问
# p = Person()
# p.he() # 人会喝 # 类名访问
Person.he() # 人会喝
4. 属性
在方法上添加一个@property. 可以把一个方法变成一个属性. 但是这个属性不可以被赋值
当我们某一个属性必须经过计算才能得到结果的时候.
class Person:
def __init__(self, name, gender, birth):
self.name = name
self.gender = gender
self.birth = birth
@property # 把一个方法更改为一个属性,每次拿属性都会执行这个方法,方法返回值是属性
def age(self):
print('我是方法')
return 2018 - self.birth p1 = Person('Jerry', '男', 1994)
print(p1.name) # Jerry
print(p1.age) # 我是方法 24
print(p1.age) # 我是方法 24
5. 私有
所有以双下划线开头的方法, 变量都是私有内容. 外界无法访问. 除非你主动暴露这些内容
python之成员(面向对象)的更多相关文章
- python 高级之面向对象初级
python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...
- python高级之面向对象高级
python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...
- 【循序渐进学Python】7.面向对象的核心——类型(上)
我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- 第四篇:python 高级之面向对象初级
python 高级之面向对象初级 python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- Python系列之 - 面向对象(1)
python是一门面向对象的编程语言,python中的一切均是对象. 有对象就提到类,对象和类就像是儿子和老子的关系,是不可分的一对. 什么是类 类就是具有一些共同特性的事物的统称.好比人类, ...
- python大法好——面向对象
python大法好——面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没 ...
- python语法学习面向对象之继承
python语法学习面向对象之继承 转载自:http://www.cnblogs.com/Joans/archive/2012/11/09/2757368.html 只要涉及到面向对象,”类“是必须出 ...
随机推荐
- vs2015 打开项目自动运行 npm install
问题:VS2015(visual studio 2015) 打开项目自动运行 npm install 解决办法: 打开工具-选项-项目与解决方案--外部web工具 去掉npm勾选 还有如果文件g ...
- 开源播放器 ijkplayer (三) :ijkplayer支持 https 编译流程
主要是为了支持flv和m3u8,使用https播放视频的需求 ./init-android.sh ./init-android-openssl.sh // 增加https协议支持 cd android ...
- WIN 10下Mysql 5.7.21解压缩(免安装版)配置
网上看了N多大神的东西东抄抄西抄抄,老是就不对,因为很多资料不是针对5.7这个版本的内容. 首先解压文件,比如我解压到D:\Program Files\mysql-5.7.21-winx64 第一步: ...
- hystrix降级初步学习
通过hystrix可以进行服务的限流.熔断.降级 配置 服务端Eureka server: port: 8761 # 指定该Eureka实例的端口 eureka: client: registerWi ...
- Testing - 软件测试知识梳理 - 测试模型
珠玉在前,不再赘言. 软件测试模型 软件测试模型汇总
- c++编程之内存的分配
当我们在进行编程时,特别是使用c++语言进行编程时,需要知道内存有几个内存区可供我们使用,因为c++可以直接操作内存.接下让我们来看看内存中的几大内存区. 1.栈区 栈区(stack)是速度最快的一个 ...
- C# Winform同时启动多个窗体类
首先创建一个类,存放将要同时显示的窗体 using System; using System.Collections.Generic; using System.Linq; using System. ...
- [每天解决一问题系列 - 0010] ADB Not Responding - Android Studio
问题描述: 最近安装了Android Studio v1.0,运行的时候老是这个错误 解决方案: 网上有人说是已经有adb的进程在运行,可是打开任务管理器,找不到对应的adb 进程. 无奈之下,想到a ...
- 图像处理之Retinex增强算法(SSR、MSR、MSRCR)
视网膜-大脑皮层(Retinex)理论认为世界是无色的,人眼看到的世界是光与物质相互作用的结果,也就是说,映射到人眼中的图像和光的长波(R).中波(G).短波(B)以及物体的反射性质有关 其中I是人眼 ...
- MySQLdump之single-transaction详解
MySQLdump之single-transaction详解 single-transaction 开启general log选项 查看目前general log的情况 mysql> show ...