клас пітона з метадам, дзеючае на сябе. ўспадкоўванне

Я мяркую, што гэта будзе лёгка для мяне, каб растлумачыць пытанне з examply Выкажам здагадку, я хачу, каб напісаць свой уласны вектар класа. І ў гэтым класе скажу я хачу, каб вызначыць метад, каб дадаць 2 вектараў нешта накшталт:

class vector:
.....
def add(self,other):
    ----some code

таму ў асноўным тое, што гэта будзе рабіць гэта .. калі вектар VEC то

vec.add(othervec)

будзе рабіць дадатак .. але як я магу гэта зрабіць .. яго як inherting уласны class..datatype ? дзякуй

0

3 адказы

Калі вы хочаце дадаць два класа, я глядзеў на __ дадаць __ функцыі, што дазваляе зрабіць нармальнае складанне (і не выклікаць .add() ):

a + b

Што ж тычыцца вашага пытання, то я не зусім упэўнены, што вы просіце. Я напісаў свой Vector() клас, як гэта:

class Vector:
  def __init__(self, x = 0, y = 0, z = 0):
    self.x = x
    self.y = y
    self.z = z

  def __add__(self, other):
    return Vector(self.x + other.x, self.y + other.y, self.z + other.z)
3
дададзена
Крута .. Гэта працуе :) Ці я думаю, што гэта будзе працаваць .. калі мы аб'яўляем клас як клас Vector (аб'ект): ?? права ??
дададзена аўтар Fraz, крыніца
Вядома. Да таго часу, пакуль аб'ект мае .x , .y і .z ўласцівасці, гэта павінна працаваць нармальна.
дададзена аўтар Blender, крыніца

У Python, вы павінны выкарыстоўваць качку набраўшы , гэта значыць не турбавацца пра тып наогул:

class Vector(object):
  def __init__(self, x, y):
    self.x = x
    self.y = y
  def add(self, othervec):
    return Vector(self.x + othervec.x, self.y + othervec.y)

Калі вы хочаце, вы можаце зрабіць дадаць Modify Вектар аб'ект замест вяртання новага. Тым не менш, што робіць ваш клас змяняецца і таму цяжэй мець справу з:

  def add_mutable(self, othervec):
    self.x += othervec.x
    self.y += othervec.y
2
дададзена

Вядома, вы можаце зрабіць менавіта так, як вы сказалі, выкажам здагадку, што вы жадаеце, каб дадаць функцыянальныя магчымасці змены/спісу

class Vector(list):

    def add(self, v):
        list.extend(self, v)

і вы можаце выкарыстоўваць яго як гэта:

> v = Vector([1,2,3])
> v.add([4,5,6])
> print v
> [1, 2, 3, 4, 5, 6]
1
дададзена