python类成员变量_Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析...

本文详细介绍了Python面向对象编程中的类变量、成员变量、类方法和成员方法的区别与用法。通过实例展示了如何声明和调用这些变量和方法,并讨论了它们的访问规则。此外,还提及了静态方法和私有变量的概念。
摘要由CSDN通过智能技术生成

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府

本文实例讲述了Python面向对象程序设计类变量与成员变量、类方法与成员方法用法。分享给大家供大家参考,具体如下:

文章目录

类变量与成员变量1、若类变量与成员同时存在并且同名2、若类变量存在,成员变量不存在,3、若类变量不存在,成员变量存在:

类方法与成员方法类方法与静态方法静态方法:类方法:

下划线

类变量与成员变量

在类中声明的变量我们称之为类变量[静态成员变量],

在init()函数中声明的变量并且绑定在实例上的变量我们称之为成员变量。

类变量直接可以通过类名来调用。

1、若类变量与成员同时存在并且同名

使用对象来调用的时候,获取的结果是成员变量的值,

使用类名来调用,获取的是类变量的值。

2、若类变量存在,成员变量不存在,

使用对象来调用的时候,它首先寻找成员变量,

如果成员变量不存在。则去寻找类变量。

3、若类变量不存在,成员变量存在:

使用类名来调用,则会报错

总结:

类变量通过类名或者对象来调用都不会报错,但是成员变量只能通过对象来调用。

通过对象来修改类属性的时候,只能作用到对象自己本身,作用不到类,

若是通过类名来修改类属性,则只对类变量的值进行修改。

class Person(object):

# 类变量

name = "haha"

age = "19"

height = 170

def __init__(self,name,age,weight):

# 成员变量

self.name = name

self.age = age

self.weight = weight

def sayHeight(self):

print(self.height)

per = Person("xiaoming",19,50)

print(per.name)

print(Person.name)

# print(Person.weight)

per.height = 190

print(per.height)

print(Person.height)

print('*********')

Person.height = 200

print(Person.height)

print(per.height)

per.sayHeight()

输出:

xiaoming

haha

190

170

*********

200

190

190

类方法与成员方法

类方法,成员方法

类方法:使用类名来调用的方法

成员方法:使用对象来调用的方法

若一个方法定义在类中,但是没有参数[一般默认self],此时我们只能通过类名来调用

若我们需要使用到一个类的对象,首先要实例化。

class Person(object):

def __init__(self,name,age):

self.name = name

self.age = age

def say(self):

print("I am %s, I am %d year old"%(self.name,self.age))

def sayHello():

print('hello I am class function')

per = Person("xiaoming",19)

per.say()

Person.sayHello()

输出:

I am xiaoming, I am 19 year old

hello I am class function

类方法与静态方法

静态方法:

当调用此方法时,不会将类的实例传递给它。

在类中定义的函数。

无需实例化类,就可以调用。它的定义在继承中,是不可变的。

类方法:

当调用此方法时,将函数所属的类作为第一个参数传递。

class A(object):

def foo(self, x):

print("executing foo(%s, %s)" % (self, x))

@classmethod

def class_foo(cls, x):

print("executing class_foo(%s, %s)" % (cls, x))

@staticmethod

def static_foo(x):

print("executing static_foo(%s)" % x)

a = A()

# 调用foo函数,参数传入1

a.foo(1)

# 调用class_foo,参数传入1

A.class_foo(1)

# 调用static_foo,参数传入1

A.static_foo(1)

a.static_foo(1):

输出:

executing foo(<__main__.a object at>, 1)

executing class_foo(, 1)

executing static_foo(1)

executing static_foo(1)

下划线

下划线定义特殊的方法,一般情况下是系统定义名字, 如:

init()、del()

前双下划线(age):表示私有类型的变量(privated),只能在本类中进行访问,外界不能直接访问。如__age.

单下划线(_age):以单下划线开头的表示保护类型变量(protected),

保护类型的变量只允许本身以及子类访问,不能用于from module import *

[使用单下划线开头的时候,虽然变量能够直接被访问,但是请把变量视为一个保护类型的变量,尽量不要去访问。

非常感谢你的阅读 大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是

没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深

入的研习计算机基础知识,整理好了,我放在我们的微信公众号《程序员学府》,如果你也不甘平庸,

那就与我一起在编码之外,不断成长吧!

其实这里不仅有技术,更有那些技术之外的东西,比如,如何

做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?点击加入 想做你自己想成为高尚人,加油!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值