• day9-20180419笔记


    笔记:Python的class类

    pycharm下载github代码

    pycharm提交代码到github

    点击“File”,选择“Default Settings”

     设置git

     设置github

    Host:填写github.com仓库地址

    Auth Type:选择“Password”

    Login:github登录账号

    Password:github登录密码

     

     

    登录github.com,就可以找到提交的项目代码 

    一、Python的class类

    类, 面向对象一个很重要的载体
    1. 类的定义
    class StuentName(object): #(object)是一个超级类,StuentName继承object的类
    pass
    2. 类里面一般都是由很多函数组成,函数的第一个参数默认都是self
    如果需要全局变量,就在类的内部直接定义
    3. 类的内部在调用函数或者调用变量的时候,必须使用self.变量 或者self.函数
    self 代表的是类实例化以后的个体
    4.类的实例化
    实例化类的首字母小写作为实例,然后类实例化
    studentName = StudentName();
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:04
    # @Author  : yangyuanqiang
    # @File    : demon2.py
    
    
    
    class A(object):
        name = "ajing"
        def hello(self):
            print("hello {0}".format(self.name))
        def test(self):
            self.hello()
            print("This is test.")
    
    a = A()
    b = A()
    类的构造器
    就是类在初始化的时候,首先,必须要执行的函数
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:05
    # @Author  : yangyuanqiang
    # @File    : demon3.py
    
    
    class A(object):
        #
        def __init__(self, name):
            self.name = name
            print("init class A")
        def hello(self):
            print("hello {0}".format(self.name))
    
    a = A("ajing")
    a.hello()   #调用函数 hello(self)

    以上实例输出的结果

    init class A
    hello ajing

    Python同样有限的支持多继承形式。多继承的类定义形如下例:

    class DerivedClassName(Base1, Base2, Base3):
        <statement-1>
        .
        .
        .
        <statement-N>

    需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

    继承  spuer
    重写
    调用: 先去找子类中的方法,如果子类中找不到对应的方法,就是父类中找
    多继承:如果父类中都有该方法,那么先继承谁, 就用谁的方法。
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:05
    # @Author  : yangyuanqiang
    # @File    : demon4.py
    
    
    
    
    class Animal(object):
        def __init__(self, name):   #定义一个构造器
            print("你现在正在初始化一个Animal")
        def run(self):  #定义一个函数
            print("Animal can run.")
    
    class Bird(Animal):     #子类继承Animal父类的特性
        def __init__(self):
            print("bird")
        def fly(self):
            print("Bird can fly.")
    
    class Cat(Animal):      #子类继承Animal父类的特性
        def __init__(self, name, sex):
            self.name = name
            self.sex = sex
            super(Cat, self).__init__(self.name)
            print("我是一只猫,啦啦啦啦")
        def jiao(self):
            print("miao miao miao miao")
        def run(self):
            print("我是一只猫,会上树来会跑路.")
    
    
    class BianYi(Cat, Bird):
        pass
    
    
    # animal = Animal()  #继承
    # cat = Cat()      #重写
    # cat.run()
    
    # bianYi = BianYi()
    
    cat = Cat("mao", "man")

     以上实例输出的结果

    你现在正在初始化一个Animal
    我是一只猫,啦啦啦啦

    java的思想

    java  中的set和get方法
    private host;
    private port;
    public getHost():
    return host
    public setHost(String host):
    this.host = host

    模拟,对数据库的操作

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:05
    # @Author  : yangyuanqiang
    # @File    : demon5.py
    
    
    
    '''
    host
    port
    username
    password
    dbname
    '''
    
    class DbArgs(object):
        # 只有类本身才可以调用
        __host = str("1.1.1.1")
        __port = str()
        __username = str()
        __password = str()
        __dbname = str()
    
        # 任何人可以调用
        name = "ajing"
    
        # 只能实例自己调用
        _host = "asdlfjasdl"
        def getHost(self):
            return self.__host
    
        def setHost(self, host):
            self.__host = host
    
    dbArgs = DbArgs()
    print(dbArgs.getHost())
    dbArgs.name = "就是要改你,怎么的"
    print(dbArgs.name)
    print(dbArgs._host)

    以上实例输出的结果

    1.1.1.1
    就是要改你,怎么的
    asdlfjasdl
    例子:
    10学生
    id
    name
    score
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:06
    # @Author  : yangyuanqiang
    # @File    : demon7.py
    
    
    
    '''
    例子:
    10学生
    id
    name
    score
    '''
    
    # class Student(object):
    #     __id = int()
    #     __name = str()
    #     __score = int()
    #
    #     def getId(self):
    #         return self.__id
    #     def setId(self, id):
    #         self.__id = id
    #
    #     def getName(self):
    #         return self.__name
    #     def setName(self, name):
    #         self.__name = name
    #
    #     def getScore(self):
    #         return self.__score
    #     def setScore(self, score):
    #         self.__score = score
    import codecs
    
    
    class Student(object):
        def __init__(self, id, name, score):
            self.id = id
            self.name = name
            self.score = score
    
    
    
    class InitStduents():
        def __init__(self):
            self.students = list()
            self.init()
        def init(self):
            self.students.append(Student(1001, "aaa", 59))
            self.students.append(Student(1002, "bbb", 96))
            self.students.append(Student(1003, "ccc", 87))
            self.students.append(Student(1004, "ddd", 89))
            self.students.append(Student(1005, "eee", 33))
            self.students.append(Student(1006, "fff", 85))
            self.students.append(Student(1007, "ggg", 78))
            self.students.append(Student(1008, "hhh", 97))
            self.students.append(Student(1009, "iii", 31))
            self.students.append(Student(1010, "jjj", 93))
    
        def sort(self):
            return sorted(self.students, key=lambda student: student.score)
    
        def writeFile(self, newStudents):
            with codecs.open("sortStudent.txt", "w")as f:
                for i in newStudents:
                    f.write("id = {0}".format(i.id))
                    f.write("	")
                    f.write("name = {0}".format(i.name))
                    f.write("	")
                    f.write("score = {0}".format(i.score))
                    f.write("
    ")
    
    
    def main():
        students = InitStduents()
        newStudents = students.sort()
        students.writeFile(newStudents)
    
    
    if __name__ == "__main__":
        main()

    以上实例输出的结果

    id = 1009    name = iii    score = 31
    id = 1005    name = eee    score = 33
    id = 1001    name = aaa    score = 59
    id = 1007    name = ggg    score = 78
    id = 1006    name = fff    score = 85
    id = 1003    name = ccc    score = 87
    id = 1004    name = ddd    score = 89
    id = 1010    name = jjj    score = 93
    id = 1002    name = bbb    score = 96
    id = 1008    name = hhh    score = 97

    类的封装

    python通过变量名命名来区分属性和方法的访问权限,默认权限相当于c++和java中的public

    类的私有属性: __private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs。

    类的私有方法:__private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/4/20 20:06
    # @Author  : yangyuanqiang
    # @File    : demon8.py
    
    
    # 阶乘的和
    
    class JinCinCount(object):
        def __init__(self, n):
            self.n = n
        def jc(self, n):
            result = 1
            if n == 0:
                return result
            else:
                for i in range(1, n+1):
                    result *= i
                return result
        def count(self):
            count = 0
            for i in range(0, int(self.n) + 1):
                count += self.jc(i)
            print("count = {0}".format(count))
    
    def main():
        n = input("Please inpurt a number: ")
        jinCinCount = JinCinCount(int(n))
        jinCinCount.count()
    
    if __name__ == "__main__":
        main()

    以上实例输出的结果

    Please inpurt a number: 3
    count = 10

    总结:

    1、重复看录播视频,加强练习类、继承、封装及方法的使用

  • 相关阅读:
    Mac如何自定义本地化文件夹名
    Mac如何升级自带的vim
    0. GC 前置知识
    Git如何修改一个过去的Commit
    1. GC标记-清除算法(Mark Sweep GC)
    防火墙、WAF、IPS、IDS都是什么
    Python dir和vars的区别
    【Kafka】Kafka数据可靠性深度解读
    Java网络编程基础之TCP粘包拆包
    【Kafka】Consumer配置
  • 原文地址:https://www.cnblogs.com/ivan-yang/p/8892877.html
Copyright © 2020-2023  润新知