面向对象二 成员
Posted danielyang11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象二 成员相关的知识,希望对你有一定的参考价值。
本节主要内容:
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. 私有方法
需要注意的是, 对于私有的内容?言. 子类是无法继承的.
以上是关于面向对象二 成员的主要内容,如果未能解决你的问题,请参考以下文章