Python面向对象编程之类方法
类方法
类方法,不能访问实例变量,只能访问类变量,英文self这个参数接收的不是实例本身,而是类本身。
"""
练习面向对象
"""
class Student(object):
stu_num = 0
def __init__(self,name):
self.name = name
Student.stu_num +=1
print("生成了一个新学生",name,self.stu_num)
s1 = Student("jieke")
s2 = Student("Tom")
s3 = Student("rose")
Student.stu_num += 1
print(Student.stu_num)
结果:
生成了一个新学生 jieke 1
生成了一个新学生 Tom 2
生成了一个新学生 rose 3
4
class Student(object):
__stu_num = 0
def __init__(self,name):
self.name = name
self.add_stu()
@classmethod
def add_stu(cls):
cls.__stu_num += 1
print("生成了一个新学生", cls.__stu_num)
s1 = Student("jieke")
s2 = Student("Tom")
s3 = Student("rose")
结果:
生成了一个新学生 1
生成了一个新学生 2
生成了一个新学生 3
"""
练习面向对象
"""
class Student(object):
__stu_num = 0
def __init__(self,name):
self.name = name
self.add_stu(self)
@classmethod
def add_stu(cls,obj):
if obj.name:
cls.__stu_num += 1
print("生成了一个新学生", cls.__stu_num)
s1 = Student("jieke")
s2 = Student("Tom")
s3 = Student("rose")
Student.add_stu(Student("xiaoming"))
私有变量
私有变量解析
在Python中,有以下几种方式来定义变量:
xx:公有变量
_xx:单前置下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入
__xx:双前置下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到)
__xx__:双前后下划线,系统定义名字(不要自己发明这样的名字)
xx_:单后置下划线,用于避免与Python关键词的冲突
|