小学生绞尽脑汁也学不会的python(面对对象-----成员)

成员
class Person:
def __init__(self, name, num, gender, birthday):
# 成员变量(实例变量)
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday

# 对象来访问(成员方法)(实例方法)
def marray(self, duifang):
print("人会结婚%s" % duifang)

成员: 在类中定义的变量和方法都被成为成员

变量
1. 成员变量(实例变量)(字段column) (重点)

2. 类变量(静态变量) 直接写在类中的. 共享出去的.
方法
1. 成员(实例)方法 加了self的.调用的时候。必须用对象去访问. (重点)
2. 类方法, 当方法需要传递类名的时候. 需要类方法. 规范规则: 在上方加@classmethod
3. 静态方法, 当你的方法不需要传递当前类的对象的时候。 语法规则:在方法上面加@staticmethod

class Person:
country = "中国" # 类变量. 不属于对象, 对象可以访问. def __init__(self, name, num, gender, birthday):
# 成员变量(实例变量)
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday # 对象来访问(成员方法)(实例方法)
def marray(self, duifang):
print("人会结婚%s" % duifang) alex = Person("李杰", 10086, "男", "昨天")
alex.country = "澳大利亚" # 注意。 这里和类变量没由一毛钱关系, 给alex单独加一个属性叫country = ”澳大利亚“ wusir = Person("吴佩琪", 10010, "女", "今天") print(alex.country) # 澳大利亚 # 拿到的是自己的。成员实例变量 字段
print(wusir.country) # 中国
print(Person.country) # 中国 # 总结:类变量,用类名去操作. 规范.

  

属性
用方法来描述我们的属性信息.
注意:
1. @propery 改变一个方法成为属性
2. 这个方法只能有一个参数, self
3. 必须有返回值.

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()
#
# Person.think(p) # 静态方法的调用: # c = Person.jisuan(1, 2) # 类名可以访问
# print(c)
#
# p = Person()
# d = p.jisuan(3, 5) # 用对象也可以访问
# print(d) # 记住, 静态的内容用类名访问 Person.clsMethod() # 类方法默认第一个参数接收的是类名

  

class Person:

    def __init__(self, name, num, gender, birthday):
self.name = name
self.num = num
self.gender = gender
self.birthday = birthday @property # 表示当前方法是一个属性. 方法的返回值就是这个属性的值
def age(self): # 方法只能有一个参数, self
return 10 # 必须有返回值 p = Person("alex", "10086", "不详", "1989年12月1日")
print(p.age) # 可以直接访问属性, 实际上访问的是age()方法. 返回值就是属性值

  

私有
只能在自己类中访问.

__方法
__变量
__类变量
都是私有. 比人访问不到. 包括他儿子.

class Tiger:

    def __init__(self, name, waibiao, qingzhenglianjiedezuofeng, qingfu, money, fangchan):
self.name = name
self.waibiao = waibiao
self.qingzhenglianjiedezuofeng = qingzhenglianjiedezuofeng
self.__qingfu = qingfu
self.__money = money
self.__fangchan = fangchan def buy(self):
print("我有%s" % self.__money)
self.__sel() def __sel(self):
print("我要卖掉%s" % self.__fangchan) lh = Tiger("alex", "正直", "非常刚正不阿, 666", "小潘潘", 10000000000, 5)
print(lh.qingzhenglianjiedezuofeng)
print(lh.name)
print(lh.waibiao)
lh.buy()
# lh.__sel()
# print(lh.__money)

  

小学生绞尽脑汁也学不会的python(面对对象-----成员)的更多相关文章

  1. 小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系)

    小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系 1. 依赖关系. 最轻的一种关系 在方法中引入另一个类的对象 class Elephant: def __init__(sel ...

  2. 小学生绞尽脑汁也学不会的python(初识面对对象)

    小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...

  3. 小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理)

    小学生绞尽脑汁也学不会的python(异常,约束,MD5加密,日志处理) 异常处理(处理) 1.产生异常.raise 异常类(),抛出异常2. 处理异常: try: xxxxx # 尝试执行的代码. ...

  4. 小学生绞尽脑汁也学不会的python(反射)

    小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...

  5. Python - 面对对象(基础)

    目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代 ...

  6. Python - 面对对象(进阶)

    目录 Python - 面对对象(进阶) 类的成员 一. 字段 二. 方法 三. 属性 类的修饰符 类的特殊成员 Python - 面对对象(进阶) 类的成员 一. 字段 字段包括:普通字段和静态字段 ...

  7. Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)

    目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2. ...

  8. 16、python面对对象之类和继承

    前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名 ...

  9. 15、python面对对象之类和对象

    前言:本文主要介绍python面对对象中的类和对象,包括类和对象的概念.类的定义.类属性.实例属性及实例方法等. 一.类和对象的概念 问题:什么是类?什么是实例对象? 类:是一类事物的抽象概念,不是真 ...

随机推荐

  1. MySQL导入到SQLServer

    Mysql是在Linux环境服务器,MSSQL在windows服务器上 1.在MSServer中安装VPN 2.为VPN配置Mysql服务器账号 3.账号中的文件 4.在MSSQL服务器上安装mysq ...

  2. 2019-04-03 SQL Group By某列,预先对该列进行一个预处理,提炼出共有的信息,即关键字case when 列名什么条件 then 赋值 else 赋值 end as 新列名

    select sum(发行金额) from( select PoolNameFormat,count(cast(ItemValue as decimal(19,4))) as 发行笔数,sum(cas ...

  3. 提高生产力:发送邮件API和Web服务(包含源码)

    在Web开发中,发邮件是一种非常常见的功能或任务. 发送邮件的6种方式 一文提到了6种方法,文章发表后,有网友指出了还有另外一种方法,Ant中也可以发送邮件. 打开Foxmail之类的邮件客户端或者在 ...

  4. chckBox样式的修改

    在Android开发中,系统自带的默认CheckBox由于比较简陋,可能难以满足部分人的审美需求,不过,Android具有很强的扩展性,自定义CheckBox其实也很简单. 1. Layout中定义C ...

  5. oracle 创建自增主键

    1.创建表 create table Test_Increase( userid number(10) NOT NULL primary key, /*主键,自动增加*/ username varch ...

  6. easy-ui采坑事件

    新用户首次登陆修改密码 imput标签中使用easyui自带的class="easyui-passwordbox"可以是密码隐藏变成黑点但是无法禁用输入法,然后果断的加了一个typ ...

  7. POJ 1236 Network of Schools 强连通图

    Description A number of schools are connected to a computer network. Agreements have been developed ...

  8. linux驱动之poll操作

    POLL操作 1.POLL运行过程: poll是一个系统调用,其内核入口函数为sys_poll,sys_poll差点儿不做不论什么处理直接调用do_sys_poll,do_sys_poll的运行过程能 ...

  9. 【ruby项目,语言提交检查(一)】怎样高速学习ruby ?

    怎样高速学习ruby ? 学习语言最快的思路. 变量,常量,变量类型,操作符. 逻辑语句如 if, else, switch, for, foreach, do while, break, 等等.要学 ...

  10. esql开发总结

    1 定义或者声明方法 int method(char *arg1,char* arg2...);   实现方法 int method(char *arg1,char* arg2...)     EXE ...