Python基础(7)——类

定义类

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

具体定义stduent类

class Student(object):
    def getName(self):
        print("获取姓名")
    
    def setName(self):
        print("设置姓名")

实例对象

对象名 = 类名()
class Student:
    def getName(self):
        print("获取姓名")

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

s = Student()
s.getName()
s.setName()
# 获取姓名
# 设置姓名

构造函数

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

 def __init__(self):
        self.Name = ""
        self.age = 0

属性

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

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个下划线的话表示该方法是私有的,否则为公有的)。

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'了),能够通过实例对象和类对象去访问。

类方法和静态方法

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())

继承

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

私有方法

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

多态

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

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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 一.类的定义 定义方式:class关键字例如,下面创建了一个Person的类,并且实现了这个类的初始化函数"ini...
    wlj1107阅读 634评论 2 0
  • 在面向对象的方法中,可以根据某些事物或者情景创建类,并基于这些类来创建对象。编写类时,定义一大类对象都有通用行为,...
    So_ProbuING阅读 2,736评论 0 18
  • 新式类和旧式类 在python2.x的版本中,有“新式类”和“旧式类(也叫做经典类)”之分。新式类是python2...
    SateZheng阅读 487评论 0 3
  • 类class 类定义 python中的类通过关键字class定义,类名以大写字母开头,并可以继承已有类: 属性赋值...
    ylonge阅读 509评论 0 1
  • 灾难使人疯狂,唯有真情长存于世。 《RMS Titanic》
    874d2eeea2ae阅读 124评论 0 0