码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象二 成员

时间:2018-11-07 16:01:25      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:int   面向对象   method   保存数据   多个   简单   class   注意   含义   

本节主要内容:

1. 类的成员

2. 类的成员-变量

3. 类的成员-方法

4. 类的成员-属性

5. 私有

一. 类的成员:

首先, 什么是类的成员. 很简单. 你能在类中写什么?  写的内容就是成员. 到目前为止. 我们 已经学过了一些成员了.

class 类名:   

# 方法    def __init__(self, 参数1, 参数2....):      

  # 属性变量量       

self.属性1 = 参数1       

self.属性2 = 参数2        ....    # 方法   

def method(self):       

pass

在上?面代码中__init__和method都属于类的成员?方法.  又称为实例方法.  总之这样的东西 需要用对象来访问.  而上方的self.属性1 = 参数1 这个代码的含义是给对象设置属性信息. 含 义是这个对象的xxx属性是xxxx. 这种东西又被称之为成员变量或者实例变量量, 再或者被称之 为字段. 都是?个意思.

二. 类的成员-变量

1. 实例变量(字段)

2. 类变量(静态变量)

class Person:    # 类变量量, 表示所有的该类的对象都共享这个变量量.   

country = "中国"      

def __init__(self, name, num, birthday):        # 实例例变量量(字段) 表示你创建的每?一个?人都有这三个变量量       

self.name = name       

self.num = num       

self.birthday = birthday

p1 = Person("alex", 18, "1840年年06?月01?日")

print(p1.name)        # alex print(p1.country)     #中国
p2 = Person("wusir", 28, "1894年年07?月25?日")

print(p2.name)        # wusir print(p2.country)     # 中国

我们发现对象p1和p2的name都是对象?自?己的. 但是country是类的. ?大家公?用同?一个变量量. 如何来验证呢?

Person.country = "?大清" # 在这?里里. 我把国家改成了了?大清

p1 = Person("alex", 18, "1840年年06?月01?日")

print(p1.name)

print(p1.country)    # alex是?大清的
p2 = Person("wusir", 28, "1894年年07?月25?日")

print(p2.name)

print(p2.country)    # wusir也是大清的

实例变量,  给对象用的.     类变量,  多个对象共享的. 最好是用类名来访问. 这样更加规范.

二. 类的成员-方法

class Computer:        # 实例方法(成员?方法)   

def play(self):       

print("我的电脑可以玩儿")

c = Computer()

c.play()    # 对象直接去调用实例方法

 静态方法. 静态方法不需要我们给方法传递self.  也就是说. 当出现?个方法不需要使用到 成员变量量的时候. 就可以选择使?用静态方法.  静态方法需要我们在?方法上?面添加?一 个@staticmethod

类?方法. 类?方法和静态?方法差不多, 只不过类?方法需要在参数列列表中的第?一个位置预留留?一 个位置, 通常我们给第?一个参数起名字叫cls. 类?方法在被调?用的时候也不需要传递实例例对象. 但是. 系统会?自动的把类传递给第?一个参数.  类?方法在编写的时候, 需要在类?方法上?面添 加@classmethod

三. 类的成员-属性

 属性其实就是通过方法改造过来的?一种变量量的写法, 在?方法上添加?一个@property就可以 了

class Person:   

def __init__(self):       

pass   

@property   

def age(self):       

return 1  

p = Person()

age = p.age

print(age)

 应?用场景: 我们?一般保存数据的时候, 不会保存?一个?人的年年龄. 因为随着时间的推移. 每个 ?人的年年龄都时刻在改变着. 那如何保存更更加完美呢? 很简单. 保存出?生年年?月?日. 然后?用程序来 计算,你当前的年年龄. 实时的. 那这个时候就需要进?行行相应的计算了了. ?而计算属于?一个功能. 当 然要写?方法?里里了了. 但是对于年年龄这个属性?而?言. 他应该是?一个数值. ?而不是动作. 所以python 就提供了了这样?一种机制. 通过?方法来描述?一个属性.    

注意:         1. 方法参数只能有?一个self       

2. 方法上?方要写@property       

3. 调用的时候, 我们不需要写括号. 直接当成属性变量来?用就可以了了.        

4. 这种套路路只能取值. 不能设置值

 

四. 私有

 在python中, ?一般是不提倡设置和使?用私有信息的. 但有些场景, 我们不得不这么做. 比如, 在?一个公司. 每个?人的收入情况, 这种内容是绝对不能公开的. 还有, 你的老婆, 也是?一个私有 的. 只能你?一个?人使?用. 别?人不能碰. 碰了了就炸锅了了.    

在python中使?用__作为?方法或者变量量的前缀. 那么这个?方法或者变量量就是?一个私有的.

1. 私有变量2. 私有方法

需要注意的是, 对于私有的内容?言. 子类是无法继承的.

 

 

 

 

 

 

 

 

 

 

 

 

 


 
 

 

面向对象二 成员

标签:int   面向对象   method   保存数据   多个   简单   class   注意   含义   

原文地址:https://www.cnblogs.com/DanielYang11/p/9922874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!