python--面向对象(02)
1.类的成员
在类中你能写的所有内容都是类的成员
class 类名:
# 方法
def __init__(self, 参数1, 参数2....):
# 属性变量量
self.属性1 = 参数1
self.属性2 = 参数2
.... # ⽅法
def method(self):
pass
2.变量
1.实例变量:每个实例都该拥有的变量,由对象去访问的变量. 比如,认得名字,人的爱好每个人的个人信息
2.类变量:这一类事物同意拥有的变量. 此时.这个变量属于类.但是对象也可以访问. 比如,中国人都拥有同一个国家
class Person:
# 类变量, 表示所有的该类的对象都共享这个变量.
country = "中国"
def __init__(self, name, num, birthday):
# 实例例变量(字段) 表示你创建的每一个人都有这三个变量
self.name = name
self.num = num
self.birthday = birthday p1 = Person("mike", 18, "1999年")
print(p1.name) # mike
print(p1.country) #中国
p2 = Person("bob", 28, "1999年")
print(p2.name) # bob
print(p2.country) # 中国
实例变量中都隐藏着一个创建这个对象的类.通过这个类就能找到我们类中定义的全部内容,包括方法和属性信息等

p1 = Person("mike", 18, "1999年")
p1.country = "美国"
print(p1.name)
print(p1.country) # 美国
p2 = Person("bob", 28, "1999年")
print(p2.name)
print(p2.country) # 中国
上面这里其实并没有改变类变量,只是在p1中添加了一个实例变量. 类变量最好是用类名访问,通过对象名也可以访问,但只能看,不能改变,如果想要改变它.需要用类名来改变
class Foo:
count = 0
def __init__(self):
Foo.count += 1
print(Foo.count) # 0
Foo()
Foo()
Foo()
print(Foo.count) # 3
实例变量,给对象用的.
类变量,多个对象共享的.
3.方法
1.实例方法(成员方法): 使用 对象.方法() 说白了对象直接访问的方法叫成员方法.
特点: 在声明的时候.需要给出self,self必须放在第一个位置,在调用的时候,自动的会把对象传递给形参的self
class Computer:
# 实例方法(成员方法)
def play(self):
print("我的电脑可以玩儿") c = Computer()
c.play() # 对象直接去调用实例方法
2.类方法(@calssmethod):类方法是属于类的
特点:在声明的时候需要给出一个能够接受类名的参数,cls,也必须在调用的时候,自动的把xx对象的类传递给cls
class Computer:
def play(self):
print("我的电脑可以玩儿")
@staticmethod
def fare():
print("我的电脑非常厉害, 可以煎鸡蛋")
@classmethod
def cal(cls, a, b):
print(cls)
return a+b
print(Computer.cal(1, 2)) # 此时会自动的把类名传递给类方法的第⼀个参数
3.静态方法(@staticmethod): 静态方法也是属于类的.静态方法就好比,我们在类中定义了一个函数,静态方法一般和类方法差不多.使用类名去访问
@staticmethod
def fare():
print("我的电脑⾮常厉害, 可以煎鸡蛋")
静态⽅法和静态变量一样. ⼀般都是使⽤类名直接访问和调用的.
Computer.fare() # 类名可以直接访问的
c.fare() # 对象也可以访问. 但最好不要这么干. 以便于区分静态方法和实例方法
4.属性
在方法上添加一个@property.可以把一个方法变成一个属性,但是这个属性不可以被赋值,当我们某一个属性必须经过计算才能得到结果的时候
class Person:
def __init__(self):
pass
@property
def age(self):
return 1
p = Person()
age = p.age
print(age)
1.比如保存出生年月日用程序来计算年龄.对于年龄来说,应该是一个数值
2.调用的时候,直接当成属性变量来用就可以了.
3.这样只能取值,不能设置值
5.私有
所有以双下滑线开头的方法,变量都是私有内容.外界无法访问.除非你主动暴露这些内容
1.私有变量
私有的内容不能直接访问.但是如果对方开辟了外界访问的通道(公共方法). 那可以通过这个公共的方法来获取到私有的内容,类变量(静态变量)一样拥有这样的属性
2.私有方法
class Person:
def __init__(self):
pass
def __yue(self):
print("我要约会")
def job(self):
print("我要工作")
self.__yue() # 在自己类中访问自己的其他方法. 哪怕是私有的. 也是自己在用
p = Person()
p.job()
对于私有方法,子类是无法继承的
class Fu:
__q = "嘻嘻"
class Zi(Fu):
pass
print(Zi.__q) # 报错
总结:

python--面向对象(02)的更多相关文章
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
		
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
 - Python—面向对象02
		
1.抽象类与归一化  接口,即提供给使用者来调用自己功能的方式.方法.入口 为什么要使用接口? 接口提取了一类共同的函数,可以把接口看做一个函数的集合 然后让子类去实现接口中的函数 这么做的意义在于 ...
 - python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
		
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
 - python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
		
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
 - Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)
		
Python开发[第七篇]:面向对象 详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)> ...
 - Python面向对象之反射,双下方法
		
一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...
 - python 面向对象初级篇
		
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
 - Python 面向对象 基础
		
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
 - python面向对象进阶(八)
		
上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
 - python 面向对象(进阶篇)
		
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
 
随机推荐
- Guidelines for Installing Oracle HR Sample Schemas
			
All scripts necessary to install sample schemas reside in $ORACLE_HOME/demo/schema directory. Before ...
 - Git进阶--你可能不知道的很好用Git功能
			
一.刚提交的代码,发现需要微调一下 刚刚最新提交了一段代码,然后跟前端说,接口好了.过了2分钟,前端跟你说,哎,兄弟,那个金额能不能返回整数,不要小数点. 这个时候一般我们通常会修改一下之后,再提交一 ...
 - Website蝴蝶结构
			
[Website蝴蝶结构] 网页的其正向链接连结在一起表现为一种蝴蝶结结构. 1.蝴蝶结中部(SCC, Strongly Connected Componnet) 这种网页彼此相连. 2.蝴蝶结左部( ...
 - shell脚本学习指南-学习(2)
			
1.I/O重定向符:< > >与管道 | #! /bin/bash echo -n "Enter your name!" //输出 printf &qu ...
 - Python_03-数据类型
			
1.1 数据类型 基本数据类型:字符串,整数,浮点数,布尔型 集合类型:列表(list), 元组(tuple), 字典(dictionary或hash) 列表(list)的定义: aList = ...
 - set 续1
			
--------siwuxie095 三.用 set 实现计算 语法: SET /A expression /A 命令行开关指定等号右边的字符串为待计算的数字表 ...
 - Implement Trie (Prefix Tree)实现字典树
			
[抄题]: Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inp ...
 - static变量和static函数
			
在C语言编程中,static的一个作用是信息屏蔽! 比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义! 你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可 ...
 - php通过反射执行某方法
			
简单记录下通过反射来获取某方法的参数,然后利用php内置函数类执行此方法 一个简单的test类 class test { //2个参数默认值 public function b($name='lemo ...
 - MVC页面和表单
			
@Styles.Render("~/Content/css")//在head中引用css @Scripts.Render("~/bundles/modernizr&quo ...