知识点:类

  • 类的构造器 __init__

类的构造器为__init__(双下划线), 里面传递成员变量.使用self参数, 并把参数(argument)传递至self.val(泛指)的成员变量中.

成员函数, 可以使用self.val, 进行操作.

构造器__init__不能返回None以外的任何对象

 1 class Person:
 2     def __init__(self, name):  #self是每个方法的默认参数,不需要设定,所有输入参数都是从第二个开始设置
 3         self.name = name
 4     def sayHi(self):
 5         print(‘Hello, my name is ‘ + self.name)
 6
 7
 8 p = Person(‘marian‘)   #第一个参数self是默认参数,‘marian‘的设定是对name的赋值
 9 p.sayHi()

 >>> Hello, my name is marian
  • 类的继承
class DerivedClassName(baseClassName): #baseClassName:基类,父类或超类    ....
import random as r

class Fish:
    def __init__(self): #类的构造方法
        self.x = r.randint(0 , 10)
        self.y = r.randint(0 , 10)

    def move(self):
        self.x -=1
        print("我是位置是",self.x,self.y)

class Shark(Fish):        #继承父类
    def __init__(self):   #重写父类方法
        print("我要吃了你!")

fish = Fish()
fish.move()>>> 我是位置是 5 9
import random as r

class Fish:
    def __init__(self):
        self.x = r.randint(0 , 10)
        self.y = r.randint(0 , 10)

    def move(self):
        self.x -=1
        print("我是位置是",self.x,self.y)

class Shark(Fish):
    def __init__(self):        super().__init__()  #如果要修改父类的方法,可以先继承父类中方法的内容。加入此句,可以解决下面的错误
        print("我要吃了你!")

shark = Shark()
shark.move()

###################################
#Traceback (most recent call last):
#  File "C:/Python33/test.py", line 17, in <module>
#    shark.move()
#  File "C:/Python33/test.py", line 9, in move
#    self.x -=1
#AttributeError: ‘Shark‘ object has no attribute ‘x‘
######################################
>>>我要吃了你!
>>>我是位置是 7 0
 
  • 多重继承
class DerivedClassName(Base1 , Base2 , Base 3):
    ....

虽然python设计了多继承,但是尽量不要使用多继承,容易发生不可预料的问题。

注意: 当多继承时,如果多个父类中有相同的方法名或者属性名,优先调用先继承的父类的方法或者属性

多继承例子:

class Base1:
def foo1(self):
print("我是foo1,我为Base1代言!")

class Base2:
def foo2(self):
print("我是foo2,我为Base2代言!")

class C(Base1 , Base2):
pass

c = C()
c.foo1()
c.foo2()

>>>我是foo1,我为Base1代言!
>>>我是foo2,我为Base2代言!
  • 屏蔽父类方法

子类可以用同名的方法覆盖父类的方法,函数体内容写成pass,这样调用该方法就没有任何作用了.

例子:企鹅继承鸟类,但是企鹅不会飞,如果屏蔽父类中鸟儿会飞的方法?

 1 class Bird:
 2     def fly(self):
 3         print("fly away!")
 4
 5 class Penguin(Bird):
 6     def fly(self):
 7         pass
 8
 9 bird = Bird()
10 penguin = Penguin()
11
12 bird.fly()
13 penguin.fly() 
 >>> fly away!
  • 组合

把类的实例化 放到一个新类里面

class Turtle:
    def __init__(self , x):
        self.num = x

class Fish:
    def __init__(self , x):
        self.num = x

class Pool:
    def __init__(self , x , y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)

    def printNum(self):
        print("水池里面有%d之乌龟和%d只鱼" % (self.turtle.num , self.fish.num))

pool = Pool(10,20)
pool.printNum()>>>水池里面有10之乌龟和20只鱼
时间: 2024-10-26 20:18:56

知识点:类的相关文章

oc知识点 类和对象

第一讲  类和对象 1面向对象 OOP 面向对象编程的三大特性 :封装,继承,多态 2类和对象的概念和区别 类:具有相同特征和行为的事物的抽象 对象:就是类的实例  ,类是对象的类型 3类和对象的定义 接口部分: 对外声明类的特征和行为.(.h) 实现部分:行为的具体实现(.m) 接口部分标志 :@interface [email protected] 声明类实例变量(成员变量)和方法,及特征和行为 例 接口部分代码: @interface Teacher :NSObject{ NSString

mfc 类对象数组

知识点 类对象数组定义 类对象数组初始化 一.类对象数组定义 我们声明类对象数组,与我们申明内置类型数组的形式完全相同. 如: int a[3]; float b[3]; Tdate d[3]; 二.类对象数组的初始化 1.调用默认构造函数,每个数组成员都会调用一次 如Tdate d[3] 则会调用3次构造函数. 2.手动初始化. 代码 #include "stdafx.h" #include <malloc.h> #include "date.h" i

mfc 类静态成员

知识点 类静态数据成员 类静态成员函数 一.类静态数据成员 静态成员的提出是为了解决数据共享的问题.实现共享有许多方法,如:设置全局性的变量或对象是一种方法.但是,全局变量或对象是有局限性的.这一课里,我们主要讨论用类的静态成员来实现对象间的数据的共享. 静态数据成员的使用方法和注意事项如下: 1.静态数据成员在定义或说明时前面加关键字static. 2.静态成员初始化与一般数据成员初始化不同.静态数据成员初始化的格式如下: <数据类型><类名>::<静态数据成员名>=

20160421

今天是上班第二天,今天老大安排我们做了一个简单的WinForm登陆界面.原来连接数据库都是用老师给的SQLHelper类来写的,今天自己尝试着写一下,虽然不难但是还是遇到了些问题. 连接字符串的7种方式只尝试了两种,一种是本地连接,一种sa连接. 今天老大给很多关于团队项目的经验.比如1.记住常见的命名空间2.常见命名空间下的常见函数这对编码效率有很高的提高. 命名规范: 公司名.团队名.项目名.模块名 或 公司名_团队名_项目名称_模块名称 原则上命名规范不唯一,是按照开发小组成员的通用习惯约

小白的学习心得

关注前端这么久,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学习之路是比较好的.学习没有捷径,但学习是有技巧与方法. 一,css入门篇: 推荐书籍:css哪些事儿,精通css. 理由:css那些事儿,他是一本介绍css基础类的书,是入门的经典读物. 系统的介绍了css的选择符,伪类,工作环境,盒模型,两列,三列自适应布局.文字样式,图片处理,列表,表单,还有选项

OC基础(2)

类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30p

前端源码-部分资源

然后下面链接分享一下,是目前阅读研究源码的一部分资源:jQuery source viewerjquery源码查询这些年.我收集的JQuery代码jquery1.6中的.prop()和.attr()异同第三章<遍历DOM元素>jquery选择器javascript笔记:临摹jQuery(一)jQuery 的原型关系图jquery选择器[原创]jQuery1.8.2源码解析之jQuery.Callbacks[原创] jQuery1.6.1源码分析系列(停止更新)jQuery event(上)jq

js常用插件

淘宝旅行通用日历组件: http://fgm.cc/learn/calendar/trip-calendar/api.html 酒店价格日历: http://fgm.cc/learn/calendar/price-calendar/api.html 弹出层:http://aui.github.com/artDialog/ 3. 图片轮换 SuperSlide2.1所有案例+TouchSlide1.0触屏滑动特效插件 http://bbs.blueidea.com/thread-3049362-1

C++11学习

C++11学习 本章目的: 当Android用ART虚拟机替代Dalvik的时候,为了表示和Dalvik彻底划清界限的决心,Google连ART虚拟机的实现代码都切换到了C++11.C+11的标准规范于2011年2月正式落稿,而此前10余年间,C++正式标准一直是C++98/03[①].相比C++98/03,C++11有了非常多的变化,甚至一度让笔者大呼不认识C++了[②].不过,作为科技行业的从业者,我们要铭记在心的一个铁规就是要拥抱变化.既然我们不认识C++11,那就把它当做一门全新的语言来

博客园欺我太甚

您好,您的博文“IP地址.子网掩码.网络号.主机号.网络地址.主机地址”被移出首页,由此给您带来麻烦,请谅解! 主要原因:相关记录知识点类文章一般不允以出现在首页,感谢您的辛苦付出与无私分享! 首页是分享知识的地方,我们对发布在首页的博文的基本要求是:原创精品,排版整齐,有足够的篇幅,与程序员相关,能够让读者从中学到知识. 如果工作人员处理不当,请您谅解并发邮件至 [email protected]与我们联系. 我每发一篇博文都会收到这样的被移出通知,园友们也有类似情况吗?