python 面向对象(二)成员
##################################总结###########################
类的成员:
变量:
实例变量 对象.属性=xxx
类变量 共享给所有该类的对象 类.变量
方法:
实例方法, 对象.方法() ###加了self的.调用的时候。必须用对象去访问. (重点)
def method(self):
pas
类方法,一般都使用类名.方法() ###当方法需要传递类名的时候. 需要类方法.
@classmethod
def method(cls):
静态方法,写在类力的函数,一般使用类名.方法() ###当你的方法不需要传递当前类的对象的时候。
@staticmethod
def method():
pass
例子########
class Foo:
def m1(self):
pass
@classmethod
def m2(cls)
pass
@staticmethod
def m3():
pass
f=Foo()
f.m1()
Foo.m2()
Foo.m3()
属性:
@property
作用:把一个方法变成属性.
有些属性必须经过计算而得到(比如出生算年纪)
@property
def age(self):
run 2018-self.birth
print(p.age)#没加小括号
私有:
__开头的东西就是私有的
只有在自己类中使用
class Foo:
name='aa'
def __init__(self,name):
self.name=name
def m1(self):
print('m1111')
@classmethod
def m2(cls):
return cls.name
@staticmethod
def m3(a,b):
return a+b
@property
def bin(self):
return '这个是%s'%(self.name)
f=Foo('zaizai')
f.m1()#调用方法
cls=Foo.m2()
print(cls)#普通方法,若要在不用类名中 每次都要self.name
static=Foo.m3(1,2)
print(static)#当你的方法不需要传递当前类的对象的时候
print(f.bin)
class Person:
def __init__(self):
pass
# 实例方法需要传递类的对象 self
def think(self):
print("人能思考")
# 静态方法不需要传递对象或者类
@staticmethod # 静态方法
def jisuan(a, b):
print("我来过这里")
return a + b
# 类方法: 第一个参数传递的是类名
@classmethod
def clsMethod(cls): # cls表示的类
p = cls() # 可以动态的创建对象.
print("我是一个类方法", p) p = Person()
p.think() #实例方法
# 静态方法的调用:
c = Person.jisuan(1, 2) # 类名访问
print(c) #类方法调用
Person.clsMethod() # 类方法默认第一个参数接收的是类名
p.clsMethod() # 在调用类方法的时候. 默认的把类名传递给类方法
#<bound method Person.he of <class '__main__.Person'>>
Person.clsMethod # 推荐类名调用
结果:
我来过这里
3
我来过这里
8
我是一个类方法<class '__main__.Person'>
4.用方法来描述一个属性
@property
方法只能有一个参数
方法必须有返回值
class Person:
def __init__(self, name, gender, birth):
self.name = name
self.gender = gender
self.birth = birth # 2000 2018
# 年龄 -> 应该是算出来的. 而不是直接存储
@property # 把一个方法更改成一个属性, 每次拿属性的时候都会自动的去执行这个方法
# 方法的返回值就是属性值
def age(self): # 实例方法
print("我是方法")
return 2018 - self.birth p1 = Person("武sir", "未知", 2000)
print(p1.age) # 看着像一个变量一样使用, 实际上这里是调用的一个方法 不用加()
print(p1.age)
# p1.age = 26 # 不可以的, 因为age是一个方法. 不是一个变量
5.私有
只能在自己类中访问. 带有前置双下环线的内容
__方法
__变量
__类变量
都是私有. 比人访问不到. 包括他儿子.
class Person:
__qie = "潘潘" # 类变量 def __init__(self, name, mimi):
self.name = name
self.__mimi = mimi # 私有内容 实例变量 def gaosu(self):
print(f"把秘密告诉了太白, 第二天所有人都知道了{self.__mimi}")
print(Person.__qie) # 私有的类变量只能在类中调用
# return self.__mimi def __yue(self): # 私有的实例方法
print("我要和宝宝约") @staticmethod
def __koujiao():
print("test希望和嫂子一起抠脚") @classmethod
def __fangqi(cls):
print("和嫂子一起放气")
p = Person("wusir", "和嫂子的故事")
# print(p.__mimi) # 私有的内容只能在类里面调用
p.gaosu() # print(Person.__qie)
a = Person("wusir", "嫂子的故事")
# a.__yue()
# Person.__koujiao() ########结果###########
把秘密告诉了太白, 第二天所有人都知道了和嫂子的故事
潘潘
python 面向对象(二)成员的更多相关文章
- python面向对象(二)——类成员
Python面向对象 类成员 1.字段 普通字段 属于对象 静态字段 属于类 2.方法 普通方法 触发者是对象 括号里至少一个参数 se ...
- python面向对象之类成员
面向对象编程: OOP编程是利用类和对象来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得简单,并可以大大提高程序开发效率.另外,基于面向对象的程序可 ...
- python面向对象二
1.1类的静态属性,类方法,类的静态方法 1.1.1静态属性(@property) 在类中: python内置的@property装饰器就是负责把一个方法(函数)变成属性来调用. class Stud ...
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
前 言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...
- Python面向对象之成员修饰符
对于这些类成员有修饰符 之前定义字段country任何对象都可以访问,是公有的 可以定义为私用属性,只有类内部的方法可以调用,外部不能直接调用,但是可以间接调用 vim day7-10.py #!/u ...
- Python面向对象-类成员
类的成员可以分为三大类:字段.方法和属性: 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在 ...
- python 面向对象二 类和实例
一.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法, ...
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...
- python面向对象之类成员修饰符
类的所有成员分为: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能访问 私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线.(特殊成员除外,例如:__init__.__c ...
随机推荐
- Luogu5289 十二省联考2019字符串问题(后缀数组+拓扑排序+线段树/主席树/KDTree)
先考虑80分做法,即满足A串长度均不小于B串,容易发现每个B串对应的所有A串在后缀数组上都是一段连续区间,线段树优化连边然后判环求最长链即可.场上就写了这个. 100分也没有什么本质区别,没有A串长度 ...
- Json.net 反序列化 部分对象
主要通过 Jobject获取想要序列化的部分对象. 直接上代码 static void Main(string[] args) { //先反序列化看看 string json = "{\&q ...
- 洛谷p1091合唱队形题解
题目 合唱队形首先要满足的是从1这个位置到中间任意的位置为单增的,从中间任意的位置到最后是单减的,且长度最长.这样才能满足出列的同学最少. 如果要满足这个条件那么我们可以先预处理出每个点的从前找的最长 ...
- 【XSY1515】【GDKOI2016】小学生数学题 组合数学
题目描述 给你\(n,k,p\)(\(p\)为质数),求 \[ \sum_{i=1}^n\frac{1}{i}\mod p^k \] 保证有解. \(p\leq {10}^5,np^k\leq {10 ...
- C# 获取变量或对象的栈与堆地址
C# 获取变量或对象的栈与堆地址 来源 https://www.cnblogs.com/xiaoyaodijun/p/6605070.html using System; using System.C ...
- cordova window error
npm install -g cordova --save ; ------------------------- error: deprecated node-uuid@1.4.7: use uui ...
- 自学华为IoT物联网_01 物联网概述
点击返回自学华为IoT物流网 自学华为IoT物联网_01 物联网概述 1. 物联网的概念 百度百科: 物联网(Internet of Things),国内外普遍公认的是MIT Auto-ID中心Ash ...
- C# 新语法收集
内联变量 使用int.tryparst时,先要申明变量,用于out参数 int d; int.tryparse(s,out d); 使用内联变量写法可以如下.功能一样简化了写化 int.trypars ...
- BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)
题面戳这 化下题面给的式子: \(z_u+z_v=p_u+p_v-b_{u,v}\) 发现\(p_u+p_v-b_{u,v}\)是确定的,所以只要确定了一个点\(i\)的权值\(x_i\),和它在同一 ...
- hdu 1527 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...