Şu an üzerinde çalıştığım kodlarda hangi method hangi sınıfa ait mantığını kavramak için çözmeye çalışıyorum. Deneme yanılma yaptım fakat bir noktada kafam karıştı. Çünkü bound method gibi bir ifade ile karşılaştım. istihza-belgeleri’nde bound gibi bir ifade ile karşılaştığımı hatırlamıyorum.
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase
# Write your program here
print(dir(brick))
Şimdi istihza belgelerinden öğrendiğim kadarı ile;
İlk satırda pybricks paketi içerisinden ev3brick modülü import edilmiş ve bu modüle brick takma ismi verilmiş
brick isimli modülün barındırdığı sınıf, method, değişken v.s. bakmak için dir()
fonksiyonunu kullanıyorum. Aşağıdaki çıktı geliyor;
['__class__', '__name__', 'battery', 'buttons', 'exit', 'light', 'stderr', 'Display', 'display', 'Speaker', 'sound']
Bu çıktı içerisinde Speaker ve sound’u araştırıyorum.
print("Speaker'ın Tipi: ",type(brick.Speaker),"\n sound'un Tipi:",type(brick.sound))
Speaker ın Tipi: <class 'type'>
sound un Tipi: <class 'Speaker'>
Bu çıktılardan Speaker’ın bir sınıf olduğunu anlıyorum. Sound’un ise yukarıda gösterdiğim dir(brick) komut çıktısına göre Speaker dışında bir method olması gerekiyordu fakat bu son çıktıya göre Speaker’a ait gibi görünüyor. Speaker’ın içini araştırıyorum;
print(dir(brick.Speaker))
['__class__', '__init__', '__module__', '__name__', '__qualname__', 'file', '_valid_devices', 'beep', 'beeps', 'tune', 'speech']
Bu çıktıda sound’u göremiyorum. sound’un içeriğini irdeliyorum;
print(dir(brick.sound))
['__class__', '__dict__', '__init__', '__module__', '__qualname__', 'file', '_valid_devices', 'beep', 'beeps', 'tune', 'speech', '_device', '_loaded_files']
İkisinin de içinde 'beep', 'beeps', 'tune', 'speech'
method ya da nitelikleri bulunuyor. Bu çıktıdan hareketle beep’i irdeliyorum.
print(type(brick.Speaker.beep))
<class 'function'>
print(type(brick.sound.beep))
<class 'bound_method'>
Son çıktıdaki bound_method ne anlama geliyor? sound Speaker’a ait mi değil mi kafam iyice karıştı. Tabi şunu da belirtmek isterim burada sizi rahatsız etmeden önce internetter araştırma yapıyorum. bağlı method olduğu ile ilgili birkaç okuma yaptım lakin tam mantığını anlamadım.
Lafı çok uzatıyorsam özür dilerim, derdimi iyi anlatmak için gidiş yolumu ve sorunumu iyice açıklamaya çalışıyorum.