前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础(7)——类

Python基础(7)——类

作者头像
羊羽shine
发布2019-05-28 13:29:43
3320
发布2019-05-28 13:29:43
举报
文章被收录于专栏:Golang开发Golang开发
定义类

定义类使用class关键字,class 后面紧跟着类名称,类名称通常首字母大写,类名称后面(object)代表当前的类的继承自object类。类主要包含属性和方法

具体定义stduent类

代码语言:javascript
复制
class Student(object):
    def getName(self):
        print("获取姓名")
    
    def setName(self):
        print("设置姓名")
实例对象
代码语言:javascript
复制
对象名 = 类名()
代码语言:javascript
复制
class Student:
    def getName(self):
        print("获取姓名")

    def setName(self):
        print("设置姓名")

s = Student()
s.getName()
s.setName()
# 获取姓名
# 设置姓名
构造函数

__init__()方法是在创建对象后,就立刻被默认调用了,一个类中可以定义多个构造函数,但是实例化时只实例化最后一个构造方法,后面的构造方法会覆盖前面的构造方法。

代码语言:javascript
复制
 def __init__(self):
        self.Name = ""
        self.age = 0
属性

在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性

代码语言:javascript
复制
class Student:
    def __init__(self,name):
        self.__name = name

    def getName(self):
        return self.__name

    def setName(self,name):
        self.__name = name


s = Student("init name")
print(s.getName())
s.setName("new name")
print(s.getName())

私有属性

它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。

代码语言:javascript
复制
class People(object):

    def __init__(self,name):
        self.__name = name
    def setName (self, newName):
        if len(newName)>=5:
            self.__name = newName
        else:
            print("error 名字长度需要大于或者等于5")
    def getName(self):
        return self.__name

xiaoming = People("xiaoming")
print(xiaoming.getName())
xiaoming.setName("wangwu")
print(xiaoming.getName())

类属性

在前面的例子中我们接触到的就是实例属性(对象属性),顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问

类方法

是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。

类方法和静态方法

代码语言:javascript
复制
class People(object):
       country ="China"

       @classmethod
       def getCountry(cls):
           return cls.country

       @staticmethod
       def language():
           return "chinese"

p = People()
print(p.getCountry())
print(People.getCountry())
print(People.language())

继承

代码语言:javascript
复制
class Person(object):
    def __init__(self,name,gender,age):
        self.name = name
        self.gender = gender
        self.__age = age
    @property
    def get_age(self):
        return self.__age



class Student(Person):

    def __init__(self,name,gender,age,score):
        super(Student,self).__init__(name,gender,age)
        self.score = score



stu = Student("BX","m",26,90)
print(stu.__dict__)
print(stu.get_age)
#{'name': 'BX', 'gender': 'm', '_Person__age': 26, 'score': 90}
#26
私有方法

私有方法和私有属性一样 都是__开头作为私有方法

多态

当子类和父类有相同的方法时,子类的方法会覆盖父类的方法,当子类对象只会调用子类的方法,这就是多态

代码语言:javascript
复制
class Animal(object):
    def cry(self):
        print("动物叫")

class Dog(Animal):
    def cry(self):
        print("旺旺")


class Cat(Animal):
    def cry(self):
        print("喵喵")

a = Animal()
a.cry()
d = Dog()
d.cry()
c = Cat()
c.cry()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义类
  • 实例对象
  • 构造函数
  • 属性
  • 私有属性
  • 类属性
  • 类方法
  • 类方法和静态方法
  • 继承
    • 私有方法
      • 多态
      相关产品与服务
      日志服务
      日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档