美文网首页
Python中的类和对象

Python中的类和对象

作者: _宁采臣 | 来源:发表于2018-07-25 21:20 被阅读179次

    1 类:具有相同属性和方法的对象的集合;

     对象:万物皆对象;
    
    2..class 类名:
    属性
    方法
    
    3.class Preson:
     def eat(self):
          print("正在吃饭");
      def sleep(self):
          print("正在睡觉")
    
    4.类的命名

    首字母大写

        以大小写分割单词
    
        不使用下划线“_”
    
    5.创建对象

    属性写在类外的情况,就是通过对象.属性,对象.方法()的方法调用

    对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)

    相互关系:类是对象的抽象,对象是类的实例,类是一种抽象事物的分类,对象是一种实例;

    6.属性相对于类来说属于全局,每个方法都可以调用;

    4.属性分归属 类属性 对象属性

    对象属性的两种创建方式:

    self 对象的载体

    def int(self,name,age):
    self.name=name;
    self,age=age;

    创建对象属性

    1. 对象名.属性 赋值的形式
    1. init(self,name,age) 在创建类的实例的时候,回自动调用这个方法,一般用户对实例属性初始化;

    class Person:
    def init(self,name,age):
    self.name=name;
    self.age=age;
    print("执行init时就被调用了")
    p=Person("tom",22)
    print(p.name)
    print(p.age)

    执行init时就被调用了
    tom
    22

    1. new(cls,agrs,*kwargs)

      在类调用init方法时,new方法决定是否要用init方法,因为new可以调用其他类的方法,或者返回别的对象来

    作为本类的实例;

    new()方法的特性:

    new()方法时在类准备将自身实例化时调用;

    new()方法始终都是类的静态方法,即使没有被加上静态方法装饰器;

    class A(object):
    def init(self,args,kwargs):
    print( "init &&&& %s" % self.class)
    def new(cls,
    args,kwargs):
    print( "new &&&& %s" % cls)
    return object.new(cls,
    args,
    *kwargs)
    a=A()

    new &&&& <class 'main.A'>
    init &&&& <class 'main.A'>

    8.对象属性 私有和共有

    类属性 公有和私有

     对属性进行私有化 __属性,外部访问不到,也不可对属性进行赋值
    

    class Person(object):
    def init(self, name):
    self.name = name
    self._title = 'Mr'
    self.__job = 'Student'
    p = Person('Bob')
    print (p.name)
    Bob
    print (p._title)
    Mr
    print (p.__job)

    1. 封装 2步

    (1)把属性变成私有

    (2)用set()和get()函数写一个方法

    class Person:
    def init(self,name,age):
    self.name=name
    self.__age=age
    def getAge(self):
    return self.__age
    def setAge(self, age):
    if age<0 or age>100:
    self.__age=18;
    else:
    self.__age=age
    def showtime(self):
    print("姓名:{}".format())
    p=Person("as",20);
    print(p.getAge())
    p.setAge(10)
    print(p.getAge())

    20
    10
    11.def str() 一个类的实例变成str,需要用特殊方法str()

    class Person(object):
    def init(self, name, gender):
    self.name = name
    self.gender = gender

    p = Person('Bob', 'male')
    print (p)

    <main.Person object at 0x02171270>

    class Person(object):
    def init(self, name, gender):
    self.name = name
    self.gender = gender
    def str(self):
    return '(Person: %s, %s)' % (self.name, self.gender)
    p = Person('Bob', 'male')
    print (p)

    (Person: Bob, male)

    12.公有方法和私有方法;

    私有方法在方法前加两个下划线:def __text():
    
    1. 自动销毁方法:del(): 当对象没有引用的时候,或程序结束的时候,程序自动调用del()

    class Person:
    def init(self,name,age):
    self.name=name
    self.age=age
    def del(self):
    print("对象张三被销毁")
    zhangsan=Person("张三",20)
    zhangsan.del()

    对象张三被销毁
    对象张三被销毁

    14.测试对象有多少次引用

    import sys
    
    t=T()
    
    sys.getrefcount(t)返回2  从2开始
    

    import sys
    class Person:
    def init(self,name,age):
    self.name=name;
    self.age=age;
    zhangsan=Person("张三",20)
    print(sys.getrefcount(zhangsan))

    2

    15.访问私有属性可以通过 对象.类名_属性访问到(不建议用这个方法)

    16.id()函数 查看对象的内存地址;

    17.类属性:属于类成员,对象共有的;

    类方法:cls 表明是 类
    
                  在方法上添加 @classmethod装饰器
    
                  def class_method(cls):
    
                  可以通过类方法调用类属性,也可以通过对象调用类属性;
    
    修改类属性的2种方式:
    
                  1.类名.类属性=... 
                  2.实例对象__class__类属性=...
    
    静态方法:前面加@staticmethod,静态方法可以加参数,与类和对象都没有关系,也可以通过类和对象调用;
    

    class Person:
    def init(self,name,age):
    self.name=name;
    self.age=age;

    def showInfo(self):
        print("姓名{0} 年龄{1}".format(self.name, self.age))
    
    @staticmethod
    def goHome(self,name, by):
        print(name, "回家...", by)
    
    1. dir() dir 展示一个类/对象的内部属性和函数;

    dir(zhangsan);
    zhangsan.dir()

    相关文章

      网友评论

          本文标题:Python中的类和对象

          本文链接:https://www.haomeiwen.com/subject/udmmmftx.html