面向对象(一) – Python量化投资

面向对象(一)

<1>类的构成

类(Class) 由3个部分构成
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法 (行为)

<2>定义类

class 类名:
    方法列表
class Student(object):
    def run(self):
        print('学生跑步')
    def sing(self):
        print('学生唱歌')

<3>创建对象

对象名 =类名()
stu =Student()
Student类拥有的属性数据
stu.name ='gxj'
stu.num ='123'
stu.run()
stu.sing()
print(stu.name)
print(stu.num)

<4>init()方法

class Student(object):
   def __init__(self):
       self.name ='gxj'
       self.num ='123'
   def run(self):
        print('学生在跑步')
stu =Student()
print('学生的姓名:%s'%stu.name)
print('学生的座位号:%s'%stu.num)
结果如下:
学生的姓名:gxj
学生的座位号:123
init_方法传递参数
class Student(object):
    def __init__(self,newName,newNum):
        self.name =newName
        self.num =newNum
    def run(self):
        print('学生在跑步')
stu =Student('gxj1','1234')
print('学生的姓名:%s'%stu.name)
print('学生的座位号:%s'%stu.num)
init_方法总结
__init__()方法,在创建一个对象时默认被调用,不需要手动调用
__init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去

<5>定义__str__()方法

当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
class Student(object):
    def __init__(self,newName,newAge):
        self.name =newName
        self.age =newAge
    def __str__(self):
        msg ='我是的姓名:'+self.name+'年龄:'+self.age
        return msg
    def run(self):
        print('跑步')
stu =Student('gxj','17')
print(stu)
结果如下:
我是的姓名:gxj年龄:17

<6>self的用法

所谓的self,可以理解为自己
某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
class Animal(object):
    def __init__(self,name):
        self.name =name
    def printName(self):
        print('名字为:%s'%self.name)
def myPrint(anamil):
    anamil.printName()
dog1 =Animal('东东')
myPrint(dog1)
dog2 =Animal('西西')
myPrint(dog2)

<7>保护对象的属性

<1>对象名.属性名 = 数据 —->直接修改
<2>对象名.方法名() —->间接修改
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
<1>将属性定义为私有属性
<2>添加一个可以调用的方法,供调用
class Student1(object):
    def __init__(self,name):
        self.__name =name
    def getName(self):
        return self.__name
    def setName(self,newName):
        if len(newName)>=3:
            self.__name =newName
        else:
            print('error:名字长度需要大于3或等于3')
xiaogao =Student1('xiaogao')
xiaogao.setName('xiaoniu')
print(xiaogao.getName())
xiaogao.setName('xiaosong')
print(xiaogao.getName())
总结:
Python中没有像C++中public和private这些关键字来区别公
有属性和私有属性
它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则
表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该
法是私有的,否则为公有的)。

https://www.cnblogs.com/gxj521test/p/11336799.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论