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)的更多相关文章

  1. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  2. Python—面向对象02

    1.抽象类与归一化 ​ 接口,即提供给使用者来调用自己功能的方式.方法.入口 为什么要使用接口? 接口提取了一类共同的函数,可以把接口看做一个函数的集合 然后让子类去实现接口中的函数 这么做的意义在于 ...

  3. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  4. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

  5. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

  6. Python面向对象之反射,双下方法

    一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...

  7. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  8. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  9. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  10. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

随机推荐

  1. Guidelines for Installing Oracle HR Sample Schemas

    All scripts necessary to install sample schemas reside in $ORACLE_HOME/demo/schema directory. Before ...

  2. Git进阶--你可能不知道的很好用Git功能

    一.刚提交的代码,发现需要微调一下 刚刚最新提交了一段代码,然后跟前端说,接口好了.过了2分钟,前端跟你说,哎,兄弟,那个金额能不能返回整数,不要小数点. 这个时候一般我们通常会修改一下之后,再提交一 ...

  3. Website蝴蝶结构

    [Website蝴蝶结构] 网页的其正向链接连结在一起表现为一种蝴蝶结结构. 1.蝴蝶结中部(SCC, Strongly Connected Componnet) 这种网页彼此相连. 2.蝴蝶结左部( ...

  4. shell脚本学习指南-学习(2)

    1.I/O重定向符:<   >  >与管道   | #! /bin/bash echo -n "Enter your name!" //输出 printf &qu ...

  5. Python_03-数据类型

    1.1   数据类型 基本数据类型:字符串,整数,浮点数,布尔型 集合类型:列表(list), 元组(tuple), 字典(dictionary或hash) 列表(list)的定义: aList = ...

  6. set 续1

    --------siwuxie095             三.用 set 实现计算     语法: SET /A expression     /A 命令行开关指定等号右边的字符串为待计算的数字表 ...

  7. Implement Trie (Prefix Tree)实现字典树

    [抄题]: Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inp ...

  8. static变量和static函数

    在C语言编程中,static的一个作用是信息屏蔽! 比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义! 你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可 ...

  9. php通过反射执行某方法

    简单记录下通过反射来获取某方法的参数,然后利用php内置函数类执行此方法 一个简单的test类 class test { //2个参数默认值 public function b($name='lemo ...

  10. MVC页面和表单

    @Styles.Render("~/Content/css")//在head中引用css @Scripts.Render("~/bundles/modernizr&quo ...