Python学习之面向对象基础

时间:2022-05-24 23:42:33

python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等

1.定义类,创建和使用对象

#定义类
class Student(object):
#类student的初始化方法
def __init__(self,name,age):
self._name=name
self._age=age
def study(self,cname):
print("%s正在学习:%s"%(self._name,cname))
def movie(self):
if self._age <= 18:
print("%s只能看熊大熊二!"%self._name)
else:
print("%s正在看爱情动作片!"%self._name)
#创建和使用对象
def main():
student1=Student('wbb',21)
student1.study('python程序设计')
student1.movie()
if __name__=='__main__':
main()

Python学习之面向对象基础

2.属性和方法的可见性

Python在这个地方和其他语言还是有些区别的,其他语言可以设置属性为私有的(private)或者受保护的(protected),来限制对属性和方法的直接访问,但是python只有公有的和私有的,而且python中私有的只是一种形式,外界仍然可以访问到。所以,建议在python中将属性和方法的可见性定为公有的,但是你可以在属性名前加个单下划线,但这仅仅只是一种暗示,提醒你访问时要小心了,并不是python的语法,毕竟你得为自己的行为负责

私有属性和方法外部不能直接访问

class Test:
#属性名以双下划线开头表示私有的
def __init__(self,foo):
self.__foo=foo
#私有方法
def __bar(self):
print(self.__foo)
print('__bar')
def main():
test=Test('hello')
#AttributeError: 'Test' object has no attribute '__bar'
test.__bar()
print(test.__foo) if __name__=='__main__':
main()

python的私有并不是完全不能访问,其实也可以访问,所有不建议设为私有的,可以以单下划线开头,表示一种暗示

class Test:
#属性名以双下划线开头表示私有的
def __init__(self,foo):
self.__foo=foo
#私有方法
def __bar(self):
print(self.__foo)
print('__bar')
def main():
test=Test('hello')
test._Test__bar()
print(test._Test__foo) if __name__=='__main__':
main()

运行结果如下图:

Python学习之面向对象基础