zoukankan      html  css  js  c++  java
  • python基础-面向对象

    类:一类事物的抽象,比如汽车类

    对象:类的一个实例,比如一台真实的宝马车

    类的定义:class关键字

    类的组成:方法类变量成员变量局部变量

    方法:也可以叫函数,但与函数不同,类方法必须包含参数self,且为第一个参数

    类变量特点:定义在类里方法外,可以由类名直接调用,也可以有对象来调用

    成员变量特点:由类的对象来调用,一般是self.开头来定义.可以类的不同方法中使用

    局部变量:方法中的普通变量,仅可以在该方法内使用

    构造方法和析构方法

    __init__()初始化操作,每次生成一个新对象便会自动调用一次该方法.可选

    __del__()删除清理操作.可选

    一般来说python的垃圾回收机制会很好的处理,所以一般不需要使用__del__()方法

    class User():#类的定义
        age = 20 #类变量,定义在类里方法外
        
        #init可以选,有初始化才写,没有初始化可以不写
        '''    
            为何必须在方法定义中包含形参self?
            因为python调用这个__init__()方法来创建User实例时,将自动传入实参self。
            每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,
            让实例能够访问类中的属性和方法。
        '''
        
        def __init__(self):#构造方法
    
            self.name = "xiaoming"#成员变量
            print("name=",self.name)
            
        def say(self):#类方法必须包含参数self,且为第一个参数
            address = "China"#方法中的局部变量
            print("address=",address)
            
            
            self.address = address#如果你想让变量可以在类中的方法间使用,就需要这样做
            
        def cry(self):
            #print(address)#报错
            print(self.address)#对应上面的
            
    u = User()#u为类的对象
    print("age=",u.age) #调用类变量
    u.say()
    u.cry()

    结果:

    name= xiaoming
    age= 20
    address= China
    China

    静态方法:参数可以为空

    class User1():
        name_count = 0 #类变量
        
        def __init__(self,name):
            self.name = name
            User1.name_count += 1
            print(name + ",次数统计:",User1.name_count)
            
        def say(self):
            print("我是" + self.name)
            
            
        #静态方法,参数可以为空
        
        @staticmethod
        def func1():
            print("我是静态方法")
            
    u1 = User1("小明1号")
    u1.say()
    
    u2 = User1("小明2号")
    u2.say()
    
    User1.func1()

    结果:

    小明1号,次数统计: 1
    我是小明1号
    小明2号,次数统计: 2
    我是小明2号
    我是静态方法

    练习:

    定义一个员工类Employee
    在创建类的时要求对员工的姓名和工资初始化
    类中有两个一般方法,一个是打印员工数量,一个是打印员工的信息(姓名和工资)

    class Employee:
        count = 0
        def __init__(self,name,salary):
            
            self.name = name
            self.salary = salary
            Employee.count +=1 #类变量在方法中的使用
            
        def print_employee_number(self):
            print("员工数量:",Employee.count)
        def print_employee_xinxi(self):
            print(self.name,self.salary)
    
    employee1 = Employee("xiaoming",5000)
    employee1.print_employee_number()
    employee1.print_employee_xinxi()
    employee2 = Employee("xiaoming1",6000)
    employee2.print_employee_number()
    employee2.print_employee_xinxi()

    结果:

    员工数量: 1
    xiaoming 5000
    员工数量: 2
    xiaoming1 6000

  • 相关阅读:
    彻底理解ThreadLocal(转)
    javascript中神奇的(+)加操作符
    quartz集群调度机制调研及源码分析---转载
    quartz源码解析--转
    通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
    LeetCode 917. Reverse Only Letters (仅仅反转字母)
    LeetCode 893. Groups of Special-Equivalent Strings (特殊等价字符串组)
    LeetCode 824. Goat Latin (山羊拉丁文)
    LeetCode 443. String Compression (压缩字符串)
    LeetCode 387. First Unique Character in a String (字符串中的第一个唯一字符)
  • 原文地址:https://www.cnblogs.com/R-bear/p/7011571.html
Copyright © 2011-2022 走看看