在python面向对象编程中、属性分为_Python-面向对象编程(1.概述)
1.在 Python 中,面向對象編程主要有兩個主題,就是類和類實例
a.類和對象是相互關聯(lián)的,類是實例的定義,實例是類的具像化。
b.類分為新式類和經(jīng)典類
新式類:(注 base 是繼承的父類,object 是所有類的父類)
class objectname(object):
define
經(jīng)典類:
class objectname:
define
c. 實例化一個類,其實就是函數(shù)調用然后賦給一個變量,如果不賦值給一個變量,會被回收掉
objectvariable = objectname()
#coding:utf-8
"""Python 中的類 = 屬性(數(shù)據(jù))+方法類對象簡稱為類,實例對象簡稱實例"""
class Person():
age = 18
def study(self):
print "go to school"
def love(self):
print "marry"
p = Person()
print p.age
p.study()
p.love()
#coding:utf-8
"""經(jīng)典類和新式類"""
class NewClass(object):#新式類 帶object參數(shù)表示繼承object
pass
class ClassicClass():#經(jīng)典類 不帶object參數(shù)表示不繼承object
pass
p = NewClass()
NewClass.c = 100
p.a = 1
p.b = 2
print p.a
print p.b
print p.c
#coding:utf-8
"""一切都可以看作類類的三個特性 封裝,繼承,多態(tài)"""
list1 = [1,2,3]
list2 = list('hello')#list也是個類,傳入?yún)?shù)給構造器
print list2
print issubclass(list,object)
print issubclass(dict,object)
#coding:utf-8
"""構造器"""
class Foo():
num = 5
def __init__(self,x,y):# self 只是一個標記,可以改成任意的字符
self.x = x
self.y = y
def print_xy(self):
print self.x,self.y
def print_num(self):
print self.num
print Foo.num
p = Foo(3,4)
p.print_xy()
p.print_num()
2.方法:改進一個類的手段就是添加功能也叫做方法,方法在類定義的時候定義然后只能被實例調用。所以調用一個類的方法的步驟是:
a.定義類以及方法
class foo(object):
"""define a class named foo"""
def print_x(self):
print "This is a class named foo"
note:***self ***代表實例對象本身,當實例調用方法的時候,是由解釋器自動傳入方法的
靜態(tài)方法和類方法不需要self,類方法需要的是類而不是實例
b.實例化一個類
foo_one = foo() """就像函數(shù)一樣去實例化,不使用new關鍵字"""
c.實例對象調用
foo_one.print_x()
3.創(chuàng)建一個類
a.關于__init__,init 可以看成是構造器(這樣理解,并不是構造)它在實例化的時候自動調用,自動傳入?yún)?shù)self以及其他(如果有)完成一些初始化的工作,就當成是一個特殊方法吧帶有init的類
class foo(object):
def __init__(self,name,phone):
self.name = name
self.phone = phone
def updatephone(self,phone):
self.phone = phone
note:init 有三個參數(shù),但是只要傳入name,phone 這兩個參數(shù),self實例化的時候自動傳入
4.創(chuàng)建實例
foo1 = foo('zhangsan',123456)
foo2 = foo('lisi',123456)
note:init 可以看成是實例化時類對其隱式調用,因為參數(shù)是完全一樣的。如果存在默認參數(shù)可以不傳入
5.訪問實例屬性
foo1.name
foo1.phone
foo2.name
foo2.phone
6.方法調用
foo1.updatephone('22222')"""updatephone需要兩個參數(shù),
一個self自動傳入。另外可以通過訪問.phone屬性來驗證該方法是否成功"""
7.創(chuàng)建子類
如創(chuàng)建一個foo的子類,
class sub_foo(foo): """需要將父類 foo寫在括號中"""
def __init__(self,name,phone.email):"""如果重構了init,將不在執(zhí)行父類中的init"""
foo.__init__(self,name,phone)"""這里的self是顯示調用在實例化的時候傳給父類"""
self.email = email
def updateemail(self,email):
self.email = email
note:子類繼承父類的屬性和方法,并且可以定制新方法而不會影響父類
8.使用子類
foo2 = sub_foo('lisi','123234','66.com')
總結
以上是生活随笔為你收集整理的在python面向对象编程中、属性分为_Python-面向对象编程(1.概述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python代码编辑器下载_编程猫Pyt
- 下一篇: cudnn7.6.5下载 solitai