python面向对象之 类
内容梗概:
1. 类的成员
2. 类的成员-变量
3. 类的成员-方法
4. 类的成员-属性
5. 私有 1.类的成员
class 类名:
方法
def __init__(self, 参数1, 参数2....):
属性变量
self.属性1 = 参数1
self.属性2 = 参数2 方法
def method(self):
pass
如上图中__init__和method都属于类的成员方法. 又称为实例例⽅方法. 总之这样的东西需要⽤用对象来访问.
⽽上方的self.属性1 = 参数1 这个代码的含义是给对象设置属性信息. 含义是这个对象的xxx属性是xxxx.
这种东西又被称之为成员变量或者实例变量, 再或者被称之为字段. 都是⼀个意思 2. 类的成员-变量
在类中变量分成两大类:
1. 实例变量(字段)
2. 类变量(静态变量) 区别看实例:
class Person():
country = "china" ## 类变量, 表示所有的该类的对象都共享这个变量量.
def __init__(self,name,age):
# 实例变量(字段) 表示你创建的每⼀个人都有这三个变量
self.name = name
self.age = age Person.country = "三里屯" # 直接使用类名进行访问
n1 = Person("alxe",15)
n1.country = "马厩" # 添加了一个实例变量
print(n1.name)
print(n1.country) # 类变量的修改只能通过类名来完成 Tips:类变量,最好是用类名来访问.当然,我们通过对象名也可以访问.但只能看,不能改变它.想要改变它,需要用类名来改变它
总结:
实例变量, 给对象⽤用的.
类变量, 多个对象共享的. 最好是用类名来访问. 这样更加规范. 3. 类的成员-方法
1. 成员方法(实例方法)
2. 静态方法
3. 类方法 3.1.1. 成员方法(实例方法)
class Car:
def run(self):
print("会跑的车")
def cul(self, a, b):
return a + b
def jump(self):
print("you jump i jump") c = Car()
c.run() # 调用实例方法,平常用的最多的,没啥说的了
print(c.cul(1 , 3))
c.jump() 3.1.2 静态方法和类方法
实例1
class Person:
def chi(self): # 实例方法
print("人在吃")
类方法
@classmethod # 类方法
def he(cls): # cls 类
print(cls)
print("我是喝")
#静态方法
@staticmethod
def shui(): # 在类中定义的一个普通函数
print("和你睡不等于睡你 -- 姜文") @staticmethod
def 上天(height): # 在类中定义的一个普通函数
print("上天%s" % height) print(Person)
Person.he() # 不管用对象还是用类去访问类方法. 默认传递进去的是类
p = Person()
p.he() # 不管用对象还是用类去访问类方法. 默认传递进去的是类 Person.shui() #静态方法调用的时候没啥区别
Person.上天(500) p = Person() #实例对象也可以调用
p.shui()
p.上天(50) 4. 类的成员-属性 class User:
def __init__(self, name, birthday, qq, email):
self.name = name
self.birthday = birthday
self.qq = qq
self.email = email @property # 可以把一个方法变成一个属性
def age(self):
return 2018 - self.birthday #需要有返回值 u = User("alex", 1968, 1024663304, "haha@126.com")
print(u.age) #调用不需要写括号,当成属性变量来⽤就可以了
u.qq = 10010
u.age = 18 #不能赋值 注意使用 @property 的几点
1.函数只能有一个self参数.
2.需要有返回值
3.不能赋值
4.调⽤的时候, 我们不需要写括号.直接当成属性变量来⽤就可以了 5. 私有
详细看实例:
class Person:
__wife = "嘿嘿" #私有的
def __init__(self, name): # 构造, 创建对象的时候自动调用
self.__name = name # 私有的
print("这里是构造方法") def init(self):
print("实例方法") def __chi(self): # 私有的
print("我要吃. 疯狂的吃") def he(self):
self.__chi() # 内部调用私有方法
print("我是喝", self.__name) # 内部可以调用私有属性
print(Person.__wife) # 内部可以调用私有属性 p = Person("孙艺珍")
p.he()
p.init()
p.__init__("哈哈哈") # 也可以这样调用构造方法,但是很low,看着蠢,不要这样用
print(p.__name) #外部调用私有属性会报错
p.__chi() #外部调用私有方法会报错 记住, 私有的内容不能直接访问. 但是如果对方开辟了了外界访问的通道(公共⽅方法).
那可以通过这个公共的⽅方法来获取到私有的内容. 这样做的好处是. 外界, 只能看, 但是改不了了. 补充:需要注意的是, 对于私有的内容⽽言. 子类是无法继承的.
实例:
class Fu:
__qingfu = "情妇_⼩小潘潘"
class Zi(Fu):
pass
print(Zi.__qingfu) # 报错
python面向对象之 类的更多相关文章
- Python 面向对象之一 类与属性
Python 面向对象之 类与属性 今天接触了一下面向对象,发现面向对象和之前理解的简直就是天壤之别,在学Linux的时候,一切皆文件,现在学面向对象了,so,一切皆对象. 之前不是一直在学的用面向函 ...
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
- python面向对象(二)——类成员
Python面向对象 类成员 1.字段 普通字段 属于对象 静态字段 属于类 2.方法 普通方法 触发者是对象 括号里至少一个参数 se ...
- python 面向对象(类)--学习笔记
面向对象是一种编程方式, 主要集中在类和对象的两个概念 python 中的类符合封装, 继承, 多态的特征 类 是一个模板, 是n多函数的集成 对象 是类的实例化 类的成员分为三大类:字段.方法.属性 ...
- python 面向对象与类的基本知识
一 什么是面向对象,面向对象与类的关系. 面向对象的程序设计是用来解决扩展性. 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象 ...
- Python面向对象编程 -- 类和实例、访问限制
面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...
- Python面向对象编程-类的封装,继承、多态
面向对象是一种程序设计思想,对象作为程序基本单元,包含了数据和操作数据的函数. 面向对象的三大特点--数据封装.多态和继承. #类的创建,class关键字,类名大写,object表示从哪个类继承而来, ...
- python 面向对象(类的成员,属性,绑定和非绑定,)
面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实 ...
- Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)
概念: ...
随机推荐
- Win32汇编学习(1):基本概念
背景知识 Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而 ...
- BZOJ4018: 小Q的幻想之乡
Description 背景 有一天,小Q梦见自己来到了理想国的幻想之乡. 描述 有一天,小Q梦见自己来到了理想国的幻想之乡.幻想乡有无穷户居民,第i个家庭住在编号为i的房屋里,编号从1开始,到正无穷 ...
- [bzoj 4034][HAOI 2015]树上操作
Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中 ...
- P4238 【模板】多项式求逆
思路 多项式求逆就是对于一个多项式\(A(x)\),求一个多项式\(B(x)\),使得\(A(x)B(x) \equiv 1 \ (mod x^n)\) 假设现在多项式只有一项,显然\(B(x)\)的 ...
- 论文笔记之:DualGAN: Unsupervised Dual Learning for Image-to-Image Translation
DualGAN: Unsupervised Dual Learning for Image-to-Image Translation 2017-06-12 21:29:06 引言部分: 本文提出 ...
- 【.Net】在windows server 2016 和Windows10这些server上安装.net fw3.5
一般就是打开server manager. 一直next到add feature 讲net3.5勾选 发现需要指定一个路径是什么 source\sxs之类的 下载microsoft-windows-n ...
- Docker3之Swarm
Make sure you have published the friendlyhello image you created by pushing it to a registry. We’ll ...
- HDU 5985 Lucky Coins(概率)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5985 题意:有多种类型的硬币,每种类型的硬币都有一定的数量,现在每次抛硬币,除去朝下的硬币,知道最后 ...
- python学习 day10打卡 函数的进阶
本节主要内容: 1.函数参数--动态参数 2.名称空间,局部名称空间,全局名称空间,作用域,加载顺序. 3.函数的嵌套 4.gloabal,nonlocal关键字 一.函数参数--动态传参 形参的第三 ...
- jquery 封装页面之间获取值
最近在项目中发页面传值比较繁琐.View → Control → View,或是Session.Cookie 的 感觉不是很好,于是封装了一个页面间的js方法,上码 $.extend({ reque ...