小学生绞尽脑汁也学不会的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)

  

最新文章

  1. CSS常用布局学习笔记
  2. java分享第九天-01(抽象类)
  3. 想在Images.xcassets 只能用 imageNamed 加载里边的素材 其他方法 你就别费老劲了
  4. CSS 笔记六(Image/Attribute Selectors)
  5. groovy–流程控制
  6. hive中的常用方法(case,cast,unix_timestamp)
  7. Java基础——数组Array
  8. 技术分享:逆向分析ATM分离器
  9. 【通信】Netty JBOSS提供的一个java开源框架
  10. 图片预览(base64和blob:图片链接)和ajax上传、下载(带进度提示)
  11. 细说UI线程和Windows消息队列
  12. 如何优化MySQL insert性能
  13. 转载:.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
  14. 络谷AT941(水提高+)题解
  15. 为什么要用docker
  16. Ubuntu 14.04 安装caffe
  17. poi-对于word的操作(一)
  18. [PC]PHPCMS配置文件的读取
  19. LEARN HOW TO HACK
  20. 抽取、转换和装载介绍(七)管理ETL环境(待续)

热门文章

  1. 【Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A】 Doggo Recoloring
  2. LaTeX soul包
  3. CF 372B Counting Rectangles is Fun [dp+数据维护]
  4. 杭电 1016 Prime Ring Problem
  5. Android自己定义RatingBar
  6. 初识MVC之建项
  7. Linux 下安装apache2.4
  8. VIM7.4 编译安装 开启python
  9. SQL的优化技巧
  10. DB-MySql:MySQL 及 SQL 注入