Python类总结-字段,方法,属性区别及StaticMethod, Property,私有字段和私有属性
- 类包含下列
- 静态属性
- 动态属性
- 静态方法
- 动态方法
class Province:
#静态字段--属于类,调用方法类.字段名
memo = "中国23个省之一"
#动态字段--属于对象,调用方式实例化对象.字段名
def __init__(self, name, capital, leader):
self.Name = name
self.Capital = capital
self.Leader = leader
#动态方法--属于对象
def sports_game(self):
print(self.Name + '正在开运动会')
#静态方法--属于类
@staticmethod
def Foo(): #去掉self参数, 静态方法属于类
print('每个省要带头反腐')
@property #把方法变成一个特性
def Bar(self):
print(self.Name)
return 'something'
hb = Province('河北','石家庄','李阳') #hb = 类定义中self参数
sd = Province('山东','济南','王盛辉')
print(hb.Capital)
print(hb.memo) #动态的对象可以访问静态类的静态字段
# print(Province.Name) #静态类不可以访问动态字段,name,capital,leader为动态字段
print(Province.memo)
hb.sports_game() #对象可以访问动态方法
sd.sports_game()
Province.Foo() #静态类可以访问静态方法
hb.Foo() #动态对象可以访问静态方法
#访问特性
hb.Bar #无需括号, 把方法访问形式转变为字段访问形式
print(hb.Bar)
>>>>>>>>>
石家庄
中国23个省之一
中国23个省之一
河北正在开运动会
山东正在开运动会
每个省要带头反腐
每个省要带头反腐
河北
河北
something
私有字段,私有方法-- __变量名
class Province:
#静态字段--属于类,调用方法类.字段名
memo = "中国23个省之一"
#动态字段--属于对象,调用方式实例化对象.字段名
def __init__(self, name, capital, leader,flag):
self.Name = name
self.Capital = capital
self.Leader = leader
#定义私有字段,__变量名
self.__Thailand = flag
#动态方法--属于对象
def sports_game(self):
print(self.Name + '正在开运动会')
#静态方法--属于类
@staticmethod
def Foo(): #去掉self参数, 静态方法属于类
print('每个省要带头反腐')
@property #把方法变成一个特性
def Bar(self):
print(self.Name)
return 'something'
#间接调用私有变量
def show(self):
print(self.__Thailand)
#构造一个Thailand函数,返回类中的私有变量__Thailand
@property#构造函数
def Thailand(self):
return self.__Thailand
#定义私有方法
def __sha(self):
print('我是Alex')
#类中可以访问私有方法
def Foo2(self):
self.__sha()
japan = Province('日本','济南','王盛辉',True)
# print(japan.__Thailand) #出错,私有变量不可访问
japan.show()
japan.Foo2()
print(japan.Thailand)
japan._Province__sha() #可以通过_Province__sha()显式调用私有变量,但不建议
>>>
True
我是Alex
True
修改私有属性的方法-Setter
class Province(object): #使用构造函数setter时候需要继承object
#静态字段--属于类,调用方法类.字段名
memo = "中国23个省之一"
#动态字段--属于对象,调用方式实例化对象.字段名
def __init__(self, name, capital, leader,flag):
self.Name = name
self.Capital = capital
self.Leader = leader
#定义私有字段,__变量名
self.__Thailand = flag
#动态方法--属于对象
def sports_game(self):
print(self.Name + '正在开运动会')
#静态方法--属于类
@staticmethod
def Foo(): #去掉self参数, 静态方法属于类
print('每个省要带头反腐')
@property #把方法变成一个特性
def Bar(self):
print(self.Name)
return 'something'
#间接调用私有变量
def show(self):
print(self.__Thailand)
#构造一个Thailand函数,返回类中的私有变量__Thailand
@property#构造函数,只读
def Thailand(self):
return self.__Thailand
#推荐修改私有变量的方法
@Thailand.setter#构造函数, 可以修改@函数名.setter(self,传个值)
def Thailand(self,value):
self.__Thailand = value
#定义私有方法
def __sha(self):
print('我是Alex')
#类中可以访问私有方法
def Foo2(self):
self.__sha()
japan = Province('日本','济南','王盛辉',True)
print(japan.Thailand)
japan.Thailand = False
print(japan.Thailand)
Python类总结-字段,方法,属性区别及StaticMethod, Property,私有字段和私有属性的更多相关文章
- Python学习笔记之面向对象编程(三)Python类的魔术方法
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分 ...
- python类之魔法方法
python类之魔法方法: class A(object): def __init__(self,x): self.x = x def __neg__(self): print('-v') def _ ...
- 第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解
第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 一. 引言 上两节介绍了构造方法的语法及参数,说明了构造方法是Python的类创建实例后首先执行的方法,并说明如果类 ...
- Python 类中__init__()方法中的形参与如何修改类中属性的值
一.__init__()方法 如果__init__()方法为 class Cat(): def __init__(self,num) : self.num=num Python中类的__init__( ...
- python类的实例方法\静态方法\类方法区别解析(附代码)
前言 搞了好久python,一直搞得不太清楚这几种类的方法,今天花时间好好测试一下,算是弄懂点皮毛吧. 三种方法的不同 先剽窃个图看一下 可以看到,实例是三种方法都可以调用的,而类只可以调用两种.所以 ...
- python 类中的方法
首先,方法是类内部定义的函数,所以方法是类的属性而不是实例的属性. 其次,方法只能在所属的类拥有实例的时候才能被调用.当存在一个实例的时候,我们可以说方法被绑定到实例.如果没有实例,那么我们就说方法是 ...
- python类的静态方法和类方法区别
先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...
- python 类的绑定方法和非绑定方法
一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. class People: def __ ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
随机推荐
- SpringCloud学习(5)——Feign负载均衡
Feign概述 Feign是声明式的Web服务客户端, 使得编写Web服务客户端变的非常容易, 只需要创建一个接口, 然后在上面添加注解即可. Feign旨在使编写Java Http客户端变的更容易. ...
- [线索二叉树] [LeetCode] 不需要栈或者别的辅助空间,完成二叉树的中序遍历。题:Recover Binary Search Tree,Binary Tree Inorder Traversal
既上篇关于二叉搜索树的文章后,这篇文章介绍一种针对二叉树的新的中序遍历方式,它的特点是不需要递归或者使用栈,而是纯粹使用循环的方式,完成中序遍历. 线索二叉树介绍 首先我们引入“线索二叉树”的概念: ...
- Python学习笔记(四十七)SMTP发送邮件
摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226 ...
- Integer Numbers
ZOJ Problem Set - 3365 Integer Numbers Time Limit: 1 Second Memory Limit: 32768 KB Special ...
- .net core 中 Identity Server 4 Topic 之 Startup
约定 简称 Id4. Id4在.net core 中的使用符合.net core 的约定架构,即Services来注册服务,middleware方式集成. 1. 配置服务 通过DI注入: public ...
- iframe子夜页面调父页面的方法 取父页面的值
1.调父页面的方法的写法 window.parent.yincang();//yincang()是父页面的一个方法 2.取父页面的值的写法 window.parent.document.gettEle ...
- styled-components真的好吗?
最近在学习react,然后遇到react中css该怎么写这个问题,上知乎上看了好多大牛都说styled-components好用是大势所趋. 但我自己用了感觉体验却很差,我在这里说说我为啥觉得styl ...
- redis笔记之两种持久化备份方式(RDB & AOF)
Redis支持的两种持久化备份方式(RDB & AOF) redis支持两种持久化方式,一种是RDB,一种是AOF. RDB是根据指定的规则定时将内存中的数据备份到硬盘上,AOF是在每次执行命 ...
- 爬虫实战--基于requests和beautifulsoup的妹子网图片爬取(福利哦!)
#coding=utf-8 import requests from bs4 import BeautifulSoup import os all_url = 'http://www.mzitu.co ...
- 固定bottom,页面其它可滑动实现方案
利用flex布局, <html> <body> <div class='container'> <div class='content'></di ...